CAS 一句话:compareAndSet就是并交换。 Demo: 结果: UnSafe类 点进源码,发现有个unsafe类。 unsafe类在rt,jar 里面的原生类。 原理 每个线程取一开始的值5到自己的工作线程,线程1写回主内存的时候,看主内存是否还是5,是的话就修改为2019,而线程2的话,先要写回主内存,发现主内存的值并非是5,导致失败。 理解前提JMM: 多线程CAS理解: 总结 缺点: 1.cpu开销大 2.只能保证一个共享变量的原子操作 3.ABA问题 看一节ABA问题介绍。