为何volatile关键字同步保证可见性后,线程没有立刻获取到修改后的值

以下事件按照顺序进行:1、线程一的System.out.print(String str)这个方法开始运行,调用了getName,获得了before,线程栈上String类型引用指向了before,它已经与那个valatile的实例无关了。此刻没来得及打印,被挂起2、线程三执行了before、after的修改动作3、线程二调用,打印after4、线程一活过来了,打印了一句before关键:调用getName与打印这两件事,不是原子的。以上


    推荐阅读