ConcurrentLinkedQueue:如何在Java中实现处理程序?

时间:2017-04-04 12:34:23

标签: java multithreading queue listener handler

假设我们有两个线程由ConcurrentLinkedQueue连接。我想要的是类似队列中的处理程序,以便一个线程知道另一个队列何时将soemthing添加到队列并进行轮询。这可能吗?

1 个答案:

答案 0 :(得分:2)

通常,当一个线程上至少有一个生产者,而另一个线程上至少有一个消费者时,会使用ConcurrentLinkedQueue

消费者会在元素可用时立即对元素进行处理,对队列块执行读取操作,有时会在有限的时间内处理。

根据应用程序的不同,您可以拥有一个生产者和许多消费者,或者反之亦然。

阻塞可以完全满足您的要求(消费者线程知道何时插入元素)。

消费者线程阻塞这个事实不是问题,除非你是主要的进程线程,或者除非你打算建立数百个并发消费者。

所以,如果你只是在专用的线程上运行它,队列#take()或队列#pollection(长超时,TimeUnit单元)就是你的朋友。