我觉得面试官是问,既然synchronize既然能保证原子性,那么原子性的东西应该没有中间状态啊,就是A a = new A();要么是没执行
A a=new A(),此时a为null,要么是
三条指令都执行完(
1.给A的对象分配内存 2.初始化A的对象 3.a引用指向刚才分配的内存
),那为啥其他线程被允许读到一个中间状态呢?这跟原子性相违背啊。
是因为原子性只是对当前线程而言吗?还是我没理解原子性?