gpt4 book ai didi

java - 多线程java应用程序中的数据缓冲

转载 作者:搜寻专家 更新时间:2023-10-31 19:57:12 24 4
gpt4 key购买 nike

我有一个多线程应用程序,它有一个生产者线程和几个消费者线程。数据存储在共享线程安全集合中,并在缓冲区中有足够数据时刷新到数据库。

来自 javadocs -

BlockingQueue<E>

一个额外支持在检索元素时等待队列变为非空的操作的队列,以及在存储元素时等待队列中可用空间的操作。

take()

检索并删除此队列的头部,必要时等待直到元素可用。

我的问题 -

  1. Is there another collection that has a E[] take(int n) method? i.e. Blocking queue waits until an element is available. What I want is that it should wait until 100 or 200 elements are available.
  2. Alternatively, is there another method I could use to address the problem without polling?

最佳答案

我认为唯一的方法是要么扩展 BlockingQueue 的某些实现,要么使用 take 创建某种实用方法:

public <E> void take(BlockingQueue<E> queue, List<E> to, int max) 
throws InterruptedException {

for (int i = 0; i < max; i++)
to.add(queue.take());
}

关于java - 多线程java应用程序中的数据缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929617/

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