synchronized詳解 synchronized怎么讀?
synchronized怎么讀?volatile與synchronized的區(qū)別與聯(lián)系:在Java中,為了保證多線程讀寫數(shù)據(jù)時數(shù)據(jù)的一致性,可以采用兩種方式:使用volatile關鍵字:在一句話中泛化
synchronized怎么讀?
volatile與synchronized的區(qū)別與聯(lián)系:
在Java中,為了保證多線程讀寫數(shù)據(jù)時數(shù)據(jù)的一致性,可以采用兩種方式:使用volatile關鍵字:在一句話中泛化volatile,當變量值發(fā)生變化時,可以讓其他線程盡快知道。例如,使用synchronized關鍵字表示或使用lock對象。Volatile是一個變量修飾符,synchronized是一個方法或塊修飾符。所以我們使用這兩個關鍵字來指定三種訪問變量的簡單方法。因此,volatile只能在線程內存和主存之間同步一個變量的值,而synchronized在線程內存和主存之間同步所有變量的值,并通過鎖定和釋放偵聽器來實現(xiàn)。顯然,synchronized將比volatile消耗更多的性能。
volatile的本質是告訴JVM寄存器中當前變量的值是不確定的,需要從主存中讀取。Synchronized是鎖定當前變量。只有當前線程可以訪問變量,其他線程被阻止。
Volatile只能在可變級別使用,而synchronized可以在可變級別和方法級別使用。Volatile只能實現(xiàn)變量的修改可見性,但它不具有原子屬性。Volatile不會導致線程阻塞,而synchronized可能會導致線程阻塞。用volatile標記的變量不由編譯器優(yōu)化,而用synchronized標記的變量可以由編譯器優(yōu)化。
synchronize怎么讀?
例如,您可以刪除它們或請求同步它們。