gpt4 book ai didi

java - ArrayBlockingQueue 包装方法是否需要同步?

转载 作者:搜寻专家 更新时间:2023-11-01 02:14:35 25 4
gpt4 key购买 nike

我有两个线程,一个分派(dispatch)消息,另一个解析消息。简单,常见。我使用 ArrayBlockingQueue 进行同步,但不希望调度程序直接访问工作消息队列 - 我使用包装器。问题是是否应该将 setter 声明为 synchronized

public class Worker implements Runnable{
protected final ArrayBlockingQueue<ByteBuffer> messages = new ArrayBlockingQueue<ByteBuffer>(16);

public synchronized void putMessage(ByteBuffer msg) throws InterruptedException{
messages.put(ByteBuffer);
}
}

最佳答案

putMessage 方法必须同步,如果一次只有一个线程需要访问此方法中的非线程安全共享状态(或者必须对共享状态进行多次修改原子状态)。

该方法所做的全部工作是调用 ArrayBlockingQueue 上的方法,该方法专门设计为可由多个线程并发访问。

方法不需要同步。

关于java - ArrayBlockingQueue 包装方法是否需要同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com