深入理解CAS 发表于 2018-12-20 | 分类于 Java多线程 一、锁机制 悲观锁(互斥同步):假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。例如:synchronized和ReentrantLock。 乐观锁(非阻塞同步):假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。乐观锁需要操作和冲突检测这两个步骤具备原子性,这里就不能再使用互斥同步 ... 阅读全文 »
Java内存模型与volatile实现原理 发表于 2018-12-20 | 分类于 Java多线程 一、Java内存模型(1)高速缓存的引入解决了CPU与内存的速度差异矛盾,但引入了一个新的问题:缓存一致性(Cache Coherence)。为了解决一致性问题,需要各个处理器访问缓存时都遵循一些协议。 Java内存模型可以理解为在特定操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。Jav ... 阅读全文 »
SingletonPattern 发表于 2018-12-20 | 分类于 Java多线程 双重检查锁(DCL,即 double-checked locking)1234567891011121314public class Singleton { private volatile static Singleton singleton; private Singlet ... 阅读全文 »