很多场景下:用了volatile关键字锁都可以不用了。
volatile在store前加锁和 在主内存中加锁有本质区别:
1.在主内存中加锁横跨了整个线程的执行过程,但是如果把锁加在store中,这个线程的主流程基本已经做完了,最终加锁只是给赋值加一个锁
2. 锁store和write这两个操作,这两个操作只是给主内存的一个变量,一个内存地址写一个值。而修改一个主内存中的值,速度是非常快的,volatile只是在修改地址的那一刻加一把锁,对程序性能的影响是非常小的。
也就是说这一把锁必须要加,加锁的力度要尽量的小。这样既解决了并发问题,又提高了并行程序的性能。