摘要:
一,Lock接口 1,核心方法: lock():获取锁 unlock():释放锁 tryLock(long time,TimeUnit unit):尝试获取锁,可以设置超时时间 2,示例代码 二,Lock和synchronized的区别 1,是否可以设置超时时间: Lock获取锁时是可以设置超时时间 阅读全文
摘要:
一,什么是原子操作?如何实现原子操作 1,synchronized可以完成原子操作,他是给予阻塞的锁的机制,但是有问题: 如果被阻塞的线程优先级很高怎么办? 拿到锁的线程一直不释放锁怎么办? 有大量线程进行竞争,消耗cpu。还容易出现死锁 锁的粒度比较大,影响性能。 二,CAS的原理(Compare 阅读全文
摘要:
一,Fork-Join 1,定义: Fork-Join框架:就是在必要的情况下,将一个大任务,进行拆分(fork)成若干个小任务(拆到不能再拆时),再将一个个的小任务运算的结果进行join汇总。 2,,Fork-Join体现了分而治之。什么是分而治之? 规模为N的问题, 当N < 阈值,直接解决。当 阅读全文
摘要:
一,线程间的协作,如何来实现? 1,轮询:难以保证及时性,资源开销很大 2,等待和通知 等待和通知的标准范式: 等待方: 要去获取对象的锁, 然后在循环里判断条件是否满足,不满足调用wait方法。 条件满足,执行业务逻辑 通知方: 获取对象的锁 改变条件 通知所有等待在对象的线程 3,方法: wai 阅读全文