非阻塞算法被广泛的用于在操作系统和JVM中实现线程/进程调度机制、垃圾回收机制以及锁和其他并发数据结构。如果在算法中仅将CAS用于协调线程之间的操作,并且能够正确的实现,那么他既是一种无阻塞算法,又是一种无锁算法。当且仅当V的值等于A时,CAS才会通过原子方式用新值B来更新A的值,否则不会执行任何操作。在使用基于原子变量而非锁的算法中,线程在执行时更不易出现延迟,并且如果遇到竞争,也更容易恢复过来。Java从JDK1.5开始提供了java.util.concurrent.atomic包,这个包中的原子操作类提供了一种用法简单、性能高效、线程安全地更新一个变量的方式。Atomic包里的类基本都是使用Unsafe实现的包装类。

java并发之原子操作类和非阻塞算法

java并发之原子操作类和非阻塞算法

java并发之原子操作类和非阻塞算法

java并发之原子操作类和非阻塞算法