【发布时间】:2016-06-01 08:07:57
【问题描述】:
我刚刚阅读了一些代码,并注意到有一些代码与本地对象同步。有人能告诉我这样做意味着什么,因为我们只是创建了一个新的本地对象,为什么要锁定它?
list queue;
...
public send()
{
entry = waitEntry();
//add this object into the list
queue.add(entry);
...
synchronized( entry )
{
//do some sth
entry.wait();
}
}
然后,当我们收到响应时,解锁这个对象
public receive()
{
entry = list.get() <-- get the object we have sent before
synchronized( entry )
{
entry.notify()
}
}
如你所见,我之前已经锁定了“入口”,如何在receive()方法中再次锁定它?
谢谢大家。
【问题讨论】:
-
这些方法有 2 个线程。 1从java发送到c,另一个从c通知到java。
-
这看起来更像是从 Java 到 Java。并且
wait()会暂时解锁,因为等待线程进入睡眠状态。唤醒后会再次锁定。 -
那不是本地对象。
-
这和
C++有什么关系吗? -
@Galik : 我只写场景,不写 c++ 代码
标签: java c++ object local synchronized