先来看Thingking In java的一段话:
1.如果你正在写一个变量,它可能接下来被另外一个线程所读取
也可以说成是下面这样:
2.你所在的线程,正在读取上一次已经被另外一个线程所写过的变量。
这两种情况【其实就只是一种】需要同步,并且,读写线程都必须用相同的监视器锁同步。
引申:如果线程所作的工作单一,比如,全部是读变量的线程,或者全部是写变量的线程,则
无须同步。
对于同为写线程,或许会让人感到疑惑,为什么不需要同步呢?
其实写一个变量,最终目的就是要覆盖这个变量,所以,根本不关心这个变量是否会被其它线程更改,所以,“中间状态”的问题,也就无关紧要了!