【发布时间】:2015-12-21 06:28:20
【问题描述】:
我正在用 Java 构建一个并发应用程序。为避免将我的锁对象暴露在外部,我有一个private final 锁对象:
private final Object Lock = new Object();
我使用锁来实现线程间的同步:
synchronized (Lock) {
// Do stuff
}
我也使用锁等待条件:
while (conditionIsNotMet) {
Lock.wait();
}
对两种并发模式使用相同的对象是否会导致任何问题?执行此操作时有什么需要注意的吗?
【问题讨论】:
-
不确定我是否理解。您需要同时拥有这两个
wait()才能工作。 -
我需要
synchronized才能使用wait()? -
@sstan 谢谢(答案见stackoverflow.com/questions/2779484/…)@Powerlord 为什么我希望它是
static? -
@sstan - 不同意这是重复的。为什么必须 wait() 在同步块中与将特定锁用于多个目的是不同的问题 - 在这种情况下,保护条件并同时为不同目的同步。
-
@Andy:有效点。但是,最后,OP 本人将问题作为重复项结束了。
标签: java multithreading synchronization