2019-12-13 多線程中鎖,wait,以及notify

在多線程中存在著多個線程交替運行的過程中,如果出現(xiàn)需要某個線程暫?;蛘邥和:笾匦聠樱敲淳鸵\用到wait()以及notify(),但在此之前我們先要了解一個鎖的概念,只有被鎖標記的對象或者方法才能運用到鎖。
鎖的創(chuàng)建:
對一個對象加鎖:

objc o = new objc
synchronized (o){

}

對一個方法加鎖在之public 之前添加一個synchronized就行:

synchronized public void a(){

}

wait()

介紹完鎖之后我們就來說說鎖的用法,wait()用于停止當前進程,但是wait()方法以及notify()方法都必須寫在synchronized 塊內:

objc o = new objc
synchronized (o){
   o.wait()
}

如果o一個線程o.wait()不是停止o這個線程而是停止o.wait所在的線程。

notify()

有暫停就有開始,notify就是用于開始同以對象中所鎖住的一個進程,notifyAll是解開所有,也就是說只要synchronized 后的對象是一樣在其他的類也可以打開其他類的當前對象的鎖。

objc o = new objc;
Thread a = new Thread();
     public void run(){
synchronized (o){
   o.wait();
}
}
Thread b = new Thread();
     public void run(){
synchronized (o){
   o.notify();
}
}

通過b線程中的run也是能對a中的wait解鎖的。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 林炳文Evankaka原創(chuàng)作品。轉載自http://blog.csdn.net/evankaka 本文主要講了ja...
    ccq_inori閱讀 735評論 0 4
  • Java多線程學習 [-] 一擴展javalangThread類 二實現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 3,111評論 1 18
  • 本文主要講了java中多線程的使用方法、線程同步、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應的一些線程函數(shù)用法、概述等。 首先講...
    李欣陽閱讀 2,599評論 1 15
  • 本文出自 Eddy Wiki ,轉載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 2,299評論 0 14
  • 1.解決信號量丟失和假喚醒 public class MyWaitNotify3{ MonitorObject m...
    Q羅閱讀 1,015評論 0 1

友情鏈接更多精彩內容