说我有这样的事情(我确实有)

class QueBean extends JPanel {
    private Queue queue = new LinkedBlockingQueue();

    public Object poll(){
        return queue.poll();
    }
}

其中一些在自己的线程上运行
class ConsumerBean extends JPanel implements Runnable{
    private QueBean queBean;

    public synchronized run(){
        while (true) {
           Object result =  queBean.poll();
           if (result != null) {
              jResultTextField.setText("got one");
           }
           wait(500);
        }
    }
}
poll() 中的 QueBean 是否应该是 synchronized

最佳答案

在这种情况下不需要外部同步。阅读 BlockingQueue 合约:

关于java - 我是否必须同步对 Java 中封装的线程安全数据结构的访问?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2239200/

10-10 04:13