-1

一个线程是否有可能在被等待之前执行一些操作,我想要做的是我希望这个线程wait()在被等待之前到另一个线程,

它是一个分布式系统,具有客户端、事务管理器和锁管理器,最后两个驻留在中间件服务器上。锁管理器可能wait()是事务管理器的一个线程,我希望这个线程能够wait()在等待自己之前成为客户端线程。

4

1 回答 1

2

您不能“等待”另一个线程。如果你调用wait()一个对象,它所做的只是让当前线程进入睡眠状态,直到它被通知(通过notify()or notifyAll())或由于所谓的虚假唤醒。我建议阅读Java 教程中的“课程:并发”。特别是关于受保护块的部分应该是你感兴趣的。

所以,如果你想告诉其他线程你即将开始等待一个对象,例如像这样

// We are somewhere, in some method ...
synchronized(someObj) {
    someObj.wait();
}

您必须实现某种观察者模式,在其中可以注册其他对象。

于 2012-11-09T23:40:07.823 回答