线程是否有可能在等待之前执行某些操作,我想要做的是我希望这个线程在等待自己之前wait()
另一个线程,
它是一个分布式系统,包含客户端,事务管理器和锁定管理器,后两个驻留在中间件服务器上。锁管理器可以wait()
事务管理器的一个线程,我希望这个线程能够wait()
客户端线程,然后再等待它自己。
答案 0 :(得分:2)
你不能“等待”另一个线程。如果你在一个对象上调用wait()
,它所做的只是将当前线程发送到睡眠状态,直到它被通知(notify()
或notifyAll()
)或由于所谓的虚假唤醒。我建议阅读"Lesson: Concurrency" from the Java Tutorials。特别是关于guarded blocks的部分应该引起你的兴趣。
所以,如果你想告诉其他一些线程你将要开始等待一个对象,例如像这样
// We are somewhere, in some method ...
synchronized(someObj) {
someObj.wait();
}
你必须实现某种观察者模式,其中可以注册其他对象。