gpt4 book ai didi

java - 从不同线程检查时,ConcurrentLinkedQueue 大小返回零

转载 作者:行者123 更新时间:2023-12-02 00:14:13 25 4
gpt4 key购买 nike

我有以下代码:

Queue<Message> localMsgQueue;
//inside the constructor
localMsgQueue = new ConcurrentLinkedQueue<Message>();

public void AddMsg(Message m)
{
localMsgQueue.offer(m);
System.out.println("^^"+localMsgQueue.size());

}
public void GetMsg() {
System.out.println("+++" + localMsgQueue.size());
}

这里,在初始化队列的主线程内部调用了AddMsg。 GetMsg 不时地从不同的线程调用。

我的问题是 AddMsg 内部的大小检查返回队列中正确的元素数量,而 GetMsg 始终返回零大小,尽管队列包含元素。

有人能指出这里的问题吗?这是我第一次使用Java并发队列,所以不知道发生了什么。

最佳答案

您可能正在构建两个不同的 ConcurrentLinkedQueue<Message>对象。

在类的构造函数中放置一个断点,看看它被命中了多少次。

// put a breakpoint here
localMsgQueue = new ConcurrentLinkedQueue<Message>();

关于java - 从不同线程检查时,ConcurrentLinkedQueue 大小返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12167889/

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