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为什么一定要在同步代码块中?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 更新文件内容吗_java Io
- 下一篇: java 模拟登陆exe_Java简单模