正常情况下基于原子变量实现的效率会比基于锁的效率高效,因为基于锁的时候会发生线程间的上下文切换,而原子变量不会。用程序实际测试了一下也确实如此,结论是原子变量的平均效率是锁效率的3倍左右,代码如下:
public class CasAndLockTest {
public static void main(String[] args) {
LockInteger li = new LockInteger(0);
AtomicInteger ai = new AtomicInteger(0);
for (int k = 0; k < 1; k++) {
new Thread() {
public void run() {
long start = System.currentTimeMillis();
for (int i = 0; i <