【Java学习】多线程2
生活随笔
收集整理的這篇文章主要介紹了
【Java学习】多线程2
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Java多線程的安全問題:
由于多線程的代碼塊中可能有共享資源,因此,當一個線程剛好使用共享資源時,CPU讓改線程被吊起,轉而執(zhí)行另外一個線程時,第二個線程又去使用共享資源,從而出現(xiàn)共享資源不一致的狀況而引發(fā)錯誤。
Java提供了同步代碼塊和同步方法兩種解決方案,很好的解決了這一問題。
synchronized (object)
{
//訪問共享資源代碼
}
參數(shù)object可以使任意一個對象,作用類似一個開關,當前線程執(zhí)行到同步代碼塊時,會先判斷object的狀態(tài),如果同步代碼塊未被某一線程執(zhí)行,進入代碼塊,并且同時設置object的標志位,待同步代碼塊執(zhí)行完畢,再次設置object的標志位,結束執(zhí)行。如果代碼塊被某一線程執(zhí)行,直接放棄CPU的執(zhí)行權。對象的作用如同鎖。
?
同步代碼塊方案的弊端:
多個線程需要判斷鎖,較為消耗資源。
同步方法就是給方法定義上添加synchronized關鍵字,同步方法使用的鎖是this。
如果同步方法被static修飾,靜態(tài)同步方法使用的鎖不是this,是該方法所在類的字節(jié)碼對象,即類名.class
?
轉載于:https://www.cnblogs.com/guoyan94/p/9419393.html
總結
以上是生活随笔為你收集整理的【Java学习】多线程2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 社群分享:涨粉的35个玩法和技巧
- 下一篇: 一.操作系统