基础篇-并发篇

  1.线程有哪些状态

添加主线程和子线程(演示阻塞状态)

 2.面试题:线程池的核心参数

核心线程和任务队列都是有上限的,所以都满了话就开始使用救急线程;
救急线程也是有上限的,如果再来新的线程的话就需要拒绝策越;

  

 

 3. 面试题:sleep和wait的区别

3.1 wait方法调用先要获取对象锁 

 3.2 wait和sleep的区别

注意:这里不需要等待5000ms,几乎是同时打印

 注意:这里需要等待5000ms才会释放对象锁(两条打印时间有5000ms)

 5.lock和sycnronized的区别

互斥:只能被一个线程调用,其他都需要等待
同步:多个线程可以同步运行,如果有一个线程需要其他结果配合,这时候就需要等待
锁重入:可以添加多个锁(如DCL双检锁)

**71.lock线程阻塞

公平和非公平演示

注意:这样写如果获取锁失败的话,立即退出而不会进入队列,以至于将内存撑爆。

 

注意:源码中有两个版本
tryLock(最长响应时间):通过参数去设定具体使用公平锁还是非公平锁
tryLock():总是使用了非公平锁

 lock条件变量演示:

 lock条件变量演示

 

 唤醒后对比:

 

 

 

 

   6.volatile 能否保证线程安全

volatile能解决可见性和有序性但是解决不了原子性问题 

6.1 原子性

 

76.volatile 可见性

 

 

78 79  80.有序性 ** 进行压测

8.悲观锁和乐观锁

 注意:使用cas的时候balance需要volatile修饰,因为cas虽然保证原子性,还需要配合使用volatile保证可见性

 

9. Hashtable和ConcurrentHashMap 

Hashtable:

注意:它的容量是质数(质数的hash分散性比较好,不需要二次hash),不是2n次方所以不需要二次hash

concurrentHashMap
 **87.演示Segment索引计算

 

注意:这体现了设计模式中的原型模式

1.7和1.8的不同

 

 

 

10.谈一谈 ThreadLocal的理解 

 **96.97 ThreadLock原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值