synchronized底層原理 volatile和synchronized的區(qū)別與聯(lián)系?
volatile和synchronized的區(qū)別與聯(lián)系?volatile和synchronized之間的區(qū)別:1。volatile的本質(zhì)是告訴JVM寄存器(工作內(nèi)存)中當前變量的值是不確定的,需要從主
volatile和synchronized的區(qū)別與聯(lián)系?
volatile和synchronized之間的區(qū)別:
1。volatile的本質(zhì)是告訴JVM寄存器(工作內(nèi)存)中當前變量的值是不確定的,需要從主存中讀取;synchronized是鎖定當前變量,只有當前線程可以訪問該變量,其他行被阻塞。
2. Volatile只能在變量級別使用;synchronized可以在變量、方法和類級別使用。
3. Volatile只能實現(xiàn)變量修改的可見性和原子性,synchronized可以保證變量修改的可見性和原子性。
4. Volatile不會導致線程阻塞;synchronized可能會導致線程阻塞。
5. 用volatile標記的變量不會被編譯器優(yōu)化;用synchronized標記的變量可以被編譯器優(yōu)化。