Ksh*_*rma 5 java java.util.concurrent
我有一个多线程应用程序,它有一个生产者线程和几个消费者线程.数据存储在共享线程安全集合中,并在缓冲区中有足够数据时刷新到数据库.
来自javadocs -
BlockingQueue<E>
Run Code Online (Sandbox Code Playgroud)
一个队列,它还支持在检索元素时等待队列变为非空的操作,并在存储元素时等待队列中的空间可用.
take()
Run Code Online (Sandbox Code Playgroud)
检索并删除此队列的头部,必要时等待,直到元素可用.
我的问题 -
- 是否有另一个具有E [] take(int n)方法的集合?即阻塞队列等待直到元素可用.我想要的是它应该等到100或200个元素可用.
- 或者,是否有另一种方法可用于解决问题而无需轮询?
我认为唯一的方法是使用以下方法扩展某些实现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());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1083 次 |
| 最近记录: |