天天看點

JAVA系列: Volatile和Synchronized差別

原子性:同一時刻,隻有一個線程可以執行某段程式代碼(原子,意思代表——不可分)

可見性:一個線程對變量的寫操作對其他線程後續的讀操作可見

Volatile的最大缺點是不支援原子性。

差別

1. volatile是線程同步的輕量級實作,是以性能比synchronized好。但是volatile隻能修飾變量,synchronized可以修飾變量、代碼塊、方法(volatile保證變量可見性,synchronized保證代碼塊可見性)。

2. volatile用于解決變量多線程之間的可見性,synchronized是解決多線程之間通路資源的同步性。

3. 多線程通路volatile不會發生阻塞,synchronized會出現阻塞

繼續閱讀