gpt4 book ai didi

java - 当我想从其头部删除消息时,如何在java中正确使用BlockingQueue

转载 作者:太空宇宙 更新时间:2023-11-04 10:31:54 25 4
gpt4 key购买 nike

我正在为 Android 编写处理实时数据的应用程序。我的应用程序从数据总线(CAN)读取二进制数据,解析并将其显示在屏幕上。应用程序在后台线程中读取数据。需要将数据从一个线程快速传输到另一个线程。显示的数据应该是最真实的。

我发现了一个很好的 java 队列,它几乎实现了所需的行为:LinkedBlockingQueue。我计划为此队列设置强限制(大约 100 条消息)。

消费者线程应该使用 take() 方法从队列中读取数据。但生产者线程不能等待消费者。因此它不能使用标准方法 put() (因为它是阻塞的)。

因此,我计划使用以下结构将消息放入队列:

while (!messageQueue.offer(message)) {
messageQueue.poll();
}

也就是说,应该从队列中删除最旧的消息,以便为新的实际数据提供位置。

这是一个好的做法吗?或者我丢失了一些重要的细节?

最佳答案

看不出有什么问题。你知道你在做什么(失去头记录)。这与任何实践无关;您可以根据自己的需要选择使用 api。不过,我个人更喜欢 ArrayBlockingQueue(临时对象较少)。

关于java - 当我想从其头部删除消息时,如何在java中正确使用BlockingQueue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49897484/

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