关于 synchronized 的线程间可见性问题
狼王_ 2017-07-19 04:06:59 JMM关于synchronized的两条规定:
1. 线程解锁前,必须把共享变量的最新值刷新到主内存中
2. 线程加锁时,讲清空工作内存中共享变量的值,从而使用共享变量时需要从主内存中重新读取最新的值。
这样,线程解锁前对共享变量的修改在下次加锁时对其他线程可见。
最后一句: 线程解锁前对共享变量的修改在下次加锁时对其他线程可见。 是什么意思啊? 是说 线程解锁前会将变量的值更新到主内存,下一次其他线程读取该变量的时候强行要求从 主内存中读取,还是说 线程解锁前将 修改后的变量更新到主内存 同时强行将该变量的值更新到各线程的工作内存啊?