解决并发问题的关键是保证读和写(业务中都是改写,例如动账)之间没有其他线程插一杠子执行写操作,即不会发生读(A)读(B)写(A)写(B)。怎么保证,写之前比较现在的值还是不是之前读到的值,是才写,即CAS。那又怎么保证CAS的原子性,硬件保证。
在针对多处理器操作而设计的处理器中提供了一些特殊指令,用于管理对共享数据的并发访问。这些指令足以实现各种互斥体,而这些互斥体又可以实现一些更复杂的并发现象。现在几乎所有现代处理器都包含某种形式的原子读-改-写指令,例如CAS。OS和JVM使用这些指令来实现锁和并发的数据结构。
引自《Java并发编程实战》