非阻塞的同步、无锁(CAS算法)

	基于锁的同步方式,是一阻塞的线程间同步方式,不同线程在锁竞争时,总不能避免相互等待,为了避免这个问题,就提出了非阻塞同步的方式,最简单的一种非阻塞同步实现就是ThreadLocal。另一种方式就是基于比较并交换(Compare And Swap)CAS算法的无锁并发控制方法。
	CAS算法的是有3个值配合完成的,一个表示要更新的变量,一个表示预期的值,一个表示新值,如果要更新的变量与预期值不同则说明已经有其他线程做了更新,则当前线程什么都不做,直到更新值于预期值相同才执行成功。
	CAS操作是乐观的,它总认为自己可以执行成功,当多个线程同时使用一个变量时,只有一个会成功,其余的均会失败,失败的线程也不会挂起,而是进行重试。基于这个原理,CAS操作没有锁,可以避免线程间的调度带来的开销,因此他比基于锁的同步方式具有更优越的性能。
原文地址:https://www.cnblogs.com/zengxianxi/p/3517185.html