synchronized同步方法概述
synchronized同步方法
1、“線程安全”與“非線程安全”:
非線程安全情況:多個線程對同一個對象中的實例變量進行并發(fā)訪問時,產生臟讀。
解決方法:對實例變量的值進行同步處理。
2、方法內的變量為線程安全
3、實例變量非線程安全
解決方法:在相應類中的方法前加關鍵字synchronized
兩個線程訪問同一個對象中的同步方法,一定是線程安全的。
4、synchronized取得的鎖都是對象鎖
線程如何取得對象鎖:
多個線程訪問同一個對象,哪個線程先執(zhí)行帶synchronized關鍵字的方法,哪個線程就持有該方法所屬對象的鎖Lock,其他線程等待狀態(tài)。
5、A線程先持有對象的Lock鎖,
1)B線程調用同一個對象中非synchronized類型方法:以異步方式調用;
2)B線程調用同一個對象中任意一個synchronized類型方法:需等待A線程釋放對象鎖后調用,也就是同步。
6、synchronized關鍵字聲明的方法一定是排隊運行的。
注意:只有共享資源的讀寫訪問才需要同步化。
7、synchronized關鍵字具有鎖重入功能
就是在使用synchronized關鍵字情況下,一個線程得到對象鎖后,再次請求該對象鎖時可以再次得到該對象的鎖。
“可重入鎖”:自己可以再次獲取自己的內部鎖。
當存在父子類繼承關系時,子類完全可以通過“可重入鎖”調用父類的同步方法。
8、同步不可以繼承
來源:《Java多線程編程核心技術》
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的synchronized同步方法概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PJ2018T4 对称二叉树 树形结构
- 下一篇: latex插入图片之后出现大段空白,并且