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