我正在使用Java构建并发应用程序。为避免在外部暴露我的锁定对象,我有一个private
final
锁定对象:
private final Object Lock = new Object();
我使用锁来进行线程之间的同步:
synchronized (Lock) {
// Do stuff
}
我还使用锁来等待条件:
while (conditionIsNotMet) {
Lock.wait();
}
对两种并发模式使用相同的对象会导致任何问题吗?这样做有什么我应该注意的吗?
答案 0 :(得分:1)
将Lock用于多个目的通常是不好的做法。通常,您应该将Lock与您的条件相关联,而另一个用于同步对共享数据的访问。也就是说,没有什么能阻止你这样做。
更新:那就是说,你应该注意@sstan评论 - 你需要在等待之前锁定Lock。如果您还在其他地方使用了锁定 ,那么您就会要求陷入僵局。