日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/21 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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为什么一定要在同步代码块中?的全部內容,希望文章能夠幫你解決所遇到的問題。

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