【发布时间】:2014-02-28 19:09:29
【问题描述】:
我想在一个不同的对象上调用等待和通知,而不是在锁上同步的对象。以这段代码为例:
Class1.foo() {
synchronized(lock) {
while(condition) {
try {
lock.wait();
}
}
lock.notify();
}
}
我想知道这是否等同于:
Class1.foo() {
synchronized(lock) {
Class2.bar(lock);
}
}
Class2.bar(Object lock) {
while(condition) {
try {
lock.wait();
}
}
lock.notify();
}
谢谢!
【问题讨论】:
-
您可以,但这是可能出现死锁的经典案例。您需要始终确保所有线程以相同的顺序锁定锁。
标签: java multithreading object wait notify