- 1.volatile本質:是java虛擬機(JVM)當前變量在工作內存中的值是不確定的,需要從主內存中讀取;synchronized則是鎖定當前的變量,只有當前線程可以訪問到該變量,其他的線程將會被阻塞。
- 2.volatile只能實現變量的修改可見性,並不能保證原子性;而synchronized則可以保證變量的修改可見性和原子性。
- 3.volatile只能使用在變量級別;synchronized則可以使用在變量、方法、和類級別的。
- 4.volatile不會造成線程的阻塞;synchronized可能會造成線程的阻塞。