and*_*and 0 java multithreading scjp wait
我创建了这个愚蠢的程序来玩 wait()
public class WaitTest {
public static void main(String [] args) {
System.out.print("1 ");
synchronized(args){
System.out.print("2 ");
try {
args.wait();
args.notifyAll();
}
catch(InterruptedException e){ System.out.print("exception caught");}
System.out.print("3 ");
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的机器上,代码永远不会打印3,除非我写wait(100)
或其他毫秒数.为什么是这样?
您在notifyAll()之前执行wait().wait()将阻止.当你输入超时值时,wait()将超时,然后你的程序将继续.如果您希望程序正常工作,请创建一个线程并在那里执行notifyAll().wait()和notifyAll专为进行线程同步而设计.
wait
并notifyAll
用于多线程. args.wait()
将永远等待,直到其他线程调用args.notifyAll()
或args.notify()
.
当你打电话时args.wait(100)
,它正在等待100毫秒,超时,然后继续.
如果你熟悉信号量,那基本上就是wait/notify.
归档时间: |
|
查看次数: |
1060 次 |
最近记录: |