与本地对象同步

时间:2016-06-01 08:07:58

标签: java c++ object local synchronized

我刚读了一些代码,并注意到有一些代码用于同步本地对象。有人告诉我,当我们创建一个新的本地对象时,它的含义是什么,我们为什么要锁定它?

/:dynamicVariable/

然后,当我们收到回复时,解锁此对象

list queue;
...

public send()
{
    entry = waitEntry();
    //add this object into the list
    queue.add(entry);
    ...
    synchronized( entry )
    {
        //do some sth
        entry.wait();
    }
}

如您所见,我之前已经锁定了'条目',如何在receive()方法中再次锁定它?

谢谢大家。

1 个答案:

答案 0 :(得分:0)

如果你有多个运行线程可以访问同一个ressource,你可能会遇到一些并发问题,在你的例子中,第一个线程会将条目添加到队列中,然后这个线程必须等待其他代码影响他的动作在这个资源上。由于两个线程是同时执行的,因此receive方法可以在错误的状态下读取条目ressource(在send方法对ressource执行之前)。

这就是我的理解,我可能是错的。 如果您想了解有关此类问题的更多信息,请阅读有关concurrency

的文章