1. 程式人生 > >synchronized和volatile區別

synchronized和volatile區別

synchronized和volatile區別

摘自《Java多執行緒程式設計核心技術》

關於synchronizedvolatile的比較:

  • 關鍵字volatile是執行緒同步的輕量級實現,所以volatile效能肯定比synchronized要好,並且只能修改變數,而synchronized可以修飾方法,以及程式碼塊。
  • 多執行緒訪問volatile不會發生阻塞,而synchronized會出現阻塞
  • volatile能保證資料的可見性,但不能保證原子性;而synchronized可以保證原子性,也可以間接保證可見性,因為它會將私有記憶體和公共記憶體中的資料做同步
  • 關鍵字volatile解決的下變數在多執行緒之間的可見性;而synchronized解決的是多執行緒之間資源同步問題