多執行緒同步方法彙總
阿新 • • 發佈:2018-12-31
多執行緒同步方法彙總
為什麼需要同步?
多個執行緒同時訪問一個物件時,可能會同時出現讀寫這個物件,那麼這個物件的狀態就會混亂,從而出現異常。
synchronized關鍵字
可以用於修飾程式碼塊和方法,讓修飾的程式碼可以同時執行
使用同步鎖
Lock的系列子類等常見鎖,悲觀鎖的形式保證同步,具體鎖的種類可以檢視我另一篇文章java鎖的分類(簡單概括版)
執行緒通訊
不同執行緒間可以通過通訊以保證同步,具體方法請看我的另一篇文章 多執行緒的通訊
Volatile關鍵字
可以修飾成員變數,用於保證變數在不同執行緒進行操作時都可見,即修改立刻生效(預設不加關鍵字時,變數會先加入工作記憶體中等待加入主記憶體),但不能保證原子性。
因為不能保證原子性,synchronized則可以,所以volatile的應用範圍較小,常用於狀態標記變數或與synchronized同時使用。
本人學習記錄使用,歡迎留言互相學習交流。2018年12月29日13:12:30