volatile和synchronized的區別

奮鬥的小青年_發表於2017-08-20

1、關鍵字volatile是執行緒同步的輕量級實現,所以volatile效能肯定比synchronized要好,並且volatile只能修飾於變數,而synchronized可以修飾方法以及程式碼塊。

2、多執行緒訪問volatile不會發生阻塞,而synchronized會出現阻塞。

3、volatile能保證資料的可見性,但不能保證原子性;而synchronized可以保證原子性,也可以間接保證可見性,因為它將私有記憶體和公共記憶體中的資料做同步。

4、關鍵字volatile解決的是變數在多個執行緒之間的可見性,而synchronized關鍵字解決的是多個執行緒之間訪問資源的同步性。


相關文章