Java中原子操作的实现原理
原子操作就是不可被中断的一个或一系列操作,看看Java是怎么实现原子操作的。
CPU实现原子操作
处理器通过对总线加锁或者缓存行加锁的方式实现多个处理器之间的原子操作。
通过对总线加锁实现原子性,现在都是多处理器,对于共享变量的读写操作,如果不加限制,可导致数据的不一致,比如处理器把值改成A,另外的处理器又把值改成B,导致不是我们需要的结果。为了解决这个问题,处理器可以使用总线锁,当一个处理器锁住总线的时候,其他处理器处于阻塞状态。这样能解决问题,但是代价是很大的。通过对缓存行加锁实现原子性,为了保证原子性,在同一时间,只要保证对于某个内存地址的原子操作即可。缓存一致性机制阻止同时修改由两个及以上处理器缓存的内存区域数据,当其他处理器回写已被锁定的缓存行数据时,会使缓存行无效。Java的原子操作
Java使用锁机制和CAS来实现原子操作。
每天都要进步一点点,哪怕一丁点......