Volatile和synchronized關鍵字

2021-09-28 17:35:15 字數 295 閱讀 5305

1.關鍵字volatile是執行緒同步的輕量級實現,它的效能肯定比synchronized要好,只能修飾變數,而synchronized的可以修飾方法和**塊

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

3.volatile能保證資料的可見性,但是不能保證資料的原子性,而synchronized可以保證原子性,也可以間接的保證可見性,因為他會講私有的記憶體和公共的記憶體中的資料做同步

4.關鍵字volatile解決的是在多執行緒之間的可見性,而synchronized解決的是多執行緒之間的資源同步問題

volatile和synchronized的區別

關於可見性的問題 可見性 即當讀寫兩個執行緒同時訪問同乙個變數時,用於確保寫執行緒更新變數後,讀執行緒再訪問該 變數時可以讀取到該變數最新的值。volatile和synchronized的區別 1.volatile本質是在告訴jvm當前變數在暫存器 工作記憶體 中的值是不確定的,需要從主存中讀取 s...

volatile和synchronize的區別

1.對變數的寫入操作不依賴變數的當前值,或者你能確保只有單個執行緒更新變數的值。2.該變數沒有包含在具有其他變數的不變式中。volatile僅能使用在變數級別 synchronized則可以使用在變數 方法 和類級別的 volatile僅能實現變數的修改可見性,不能保證原子性 而synchroniz...

volatile和synchronized的區別

public class runthread extends thread public void setrunning boolean isrunning override public void run system.out.println 執行緒執行完成了 public class run c...