gpt4 book ai didi

java - 多线程java中的队列是无阻塞的

转载 作者:行者123 更新时间:2023-12-02 06:36:18 24 4
gpt4 key购买 nike

请帮我解决问题。
我正在尝试通过队列将数据从 gui 线程发送到另一个线程。
但我遇到了一个问题。当另一个线程正在使用队列时,GUI线程将对象添加到队列中,Gui线程将被阻塞一些微秒。所以GUI不流畅。
我的类(class)是:

public enum AresManager {
MANAGER;
Queue<AresAction> actionsQueue = new LinkedList<AresAction>();

public synchronized void sendAction(Context context, AresAction action) {
actionsQueue.add(action);
Intent intent = new Intent(context, AresServiceSingleHandler.class);
context.startService(intent);
}

public synchronized AresAction getActionFromQueue() {
AresAction action = actionsQueue.poll();
AresLog.v("[Actions Queue] size = " + actionsQueue.size()
+ " (always should be 0)");
return action;
}

}

最佳答案

ConcurrentLinkedQueue 是一种无等待算法,可以实现您想要的结果:

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html

关于java - 多线程java中的队列是无阻塞的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19614752/

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