日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 线程 wait 一定要同步_Java 线程中调用wait为什么一定要在同步代码块中?

發布時間:2025/3/21 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 线程 wait 一定要同步_Java 线程中调用wait为什么一定要在同步代码块中? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

展開全部

wait是讓使用wait方法的對象等待,暫時先把對象鎖給讓出來,給其它持有該鎖的對象用,其它對象用完后再636f707962616964757a686964616f31333337396235告知(notify)等待的那個對象可以繼續執行了,因此,只有在synchronized塊中才有意義(否則,如果大家并不遵循同步機制,那還等誰呢?根本沒人排隊,也就談不上等待和喚醒了)

以下是一個例子,用以展示這種機制:public?class?ThreadA?{

public?static?void?main(String[]?args)?{

ThreadB?b?=?new?ThreadB();

b.start();//主線程中啟動另外一個線程

System.out.println("b?is?start....");

//括號里的b是什么意思,應該很好理解吧

synchronized(b)?{

try?{

System.out.println("Waiting?for?b?to?complete...");

b.wait();//這一句是什么意思,究竟誰等待?

System.out.println("ThreadB?is?Completed.?Now?back?to?main?thread");

}catch?(InterruptedException?e){}

}

System.out.println("Total?is?:"?+?b.total);

}

}

class?ThreadB?extends?Thread?{

int?total;

public?void?run()?{

synchronized(this)?{

System.out.println("ThreadB?is?running..");

for?(int?i=0;?i<=100;?i++?)?{

total?+=?i;

}

System.out.println("total?is?"?+?total);

notify();

}

}

}

運行結果:

b is start....

Waiting for b to complete...

ThreadB is running..

total is 5050

ThreadB is Completed. Now back to main thread

Total is :5050

總結

以上是生活随笔為你收集整理的java 线程 wait 一定要同步_Java 线程中调用wait为什么一定要在同步代码块中?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。