gpt4 book ai didi

java - 我的线程不适用于我的队列

转载 作者:行者123 更新时间:2023-11-29 03:38:53 24 4
gpt4 key购买 nike

我是多线程方面的新手,所以这可能是一个愚蠢的问题;)但是我有一个线程使用一个队列,该队列在线程运行时将填充命令。我在这里遇到的问题是线程看不到队列中的更改,因此当我尝试访问队列中的元素时一直返回 null。有什么帮助吗?

//This method will add an command to the queue
public void sendCommand( String Command )
{
qe.add(Command);
}

public void run()
{
while( true )
{
while(qe.peek() != null)
{
sendCommandToDevice(qe.poll());
}
}
}

最佳答案

也许你的队列的实现有问题;对于为什么读取循环看不到变化,我没有其他解释。

也就是说,这看起来是一种糟糕的实现方式。任何时候等待添加消息时,您的线程都会“旋转”,以很高的速度消耗 CPU。您需要一些东西来通知您的读者有(可能)元素添加到队列中,而不是连续轮询它。查找有关 Object 方法 wait 和 notifyAll 的教程;基本思想是你的读者线程在一个对象上执行等待,并且挂起线程直到它再次用 notifyAll 启动。整个类(class)对于 SO 答案来说太大了。

关于java - 我的线程不适用于我的队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14104144/

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