Java併發——volatile關鍵字:可見性

(1)volatile是輕量級的synchronized,它在多處理器開發中保證了共享變量的“可見性”,但無法保證“原子性”。

(2)volatile不會引起線程上下文的切換,在使用恰當的情況下,比synchronized的使用和執行成本更低.

Volatile不需要加鎖,比Synchronized更輕量級,並不會阻塞線程(volatile不會造成線程的阻塞;synchronized可能會造成線程的阻塞。)

(3)只能在類屬性聲明處才能使用volatile,局部變量聲明爲volatile會報錯。

(4)應避免在32位的JVM上將double、long型的屬性聲明成volatile,因爲在32位JVM上訪問一個double或long型的變量值需要進行兩步操作,若要安全地訪問它們的值,原子性(通過synchronized)也是必要的。

 

可以藉助final創建一個不可變且線程安全的類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章