java中使用atomic的时候,由于cas机制,获取到的实际值和预期值不一致,会进入自旋状态,也就是卡死状态,但实际开发中,代码却可以正常进入下次循环,为什么不会因为自旋而永远卡死在本次循环呢? import java.util.concurrent.atomic.AtomicInteger; public class AtomicTest { static volatile AtomicInteger num = new AtomicInteger(0); public static void main(String[] args) throws InterruptedException { //创建10个线程并启动 for (int i = 1; i <= 10; i++) { new Thread() { @Override public void run() { // 每个线程内部循环1万次,每次num自增1 for (int j = 0; j < 10000; j++) { num.incrementAndGet();//进行cas操作,这时候可能会产生cas自旋,产生自旋后为啥不会卡死,仍然可以结束本次循环 } } }.start(); } Thread.sleep(3000);//保证获取到的num值为所有线程执行完毕后最新的值 System.out.println("最终获取到的num=" + num.get()); } }