wait()
作用:线程阻塞挂起
返回条件:
- 其他线程调用该线程的notify或者notifyAll
- 其他线程调用该线程的interrupt,报InterruptException
- 虚假唤醒(很少,防患);判断不满足条件,就调用wait
经典防患代码:
synchronized (object){
while (条件不满足){
object.wait();
}
}
报IllegalMonitorStateException错误:没有获取资源的监视器锁
如何获取:
// one
synchronized (object){
// do something
}
//two
synchronized void doSomething(){
}
wait(long timeoout)
作用:到时间自动唤醒
notify()
作用:随机唤醒,共享变量调用wait方法后的线程,然后该线程竞争锁,获取锁资源后开始执行
注意:调用前需要获取共享变量的监视器锁。
notifyAll()
作用:唤醒所有该共享变量调用过wait过的线程。
版权声明:本文为weixin_43434182原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。