如何在Java中使用监视器(synchronized)

时间:2014-10-21 02:33:41

标签: java multithreading mutex

我希望在Java中创建多个异步线程并在它们之间传递消息。我将数据发送到目标节点中的数据结构,然后轮询它。但必须锁定对该数据结构的访问。

我用这一行来创建锁:

  

private final Object lock = new Object();

这个函数访问结构:

public int mailboxSize()
{
    synchronized (lock)
    {
        return mailbox.size();
    }
}

我担心的是,如果所有节点都使用这个类/ cookie-cutter作为他们的代码,那么所有锁都是相同的,我将只有1个锁而不是我希望的n。真的吗?如果是这样,我如何为每个节点创建一个唯一的锁?也许一些递增id?锁是否必须是object类型,还是我可以使用int或Integer?

提前致谢!

1 个答案:

答案 0 :(得分:1)

查看BlockingQueue接口以及实现它的类。

在此链接的中途,有一些代码显示如何设置生产者和一些多线程消费者。正是你想要我想的。