假设我们有两个线程由ConcurrentLinkedQueue连接。我想要的是类似队列中的处理程序,以便一个线程知道另一个队列何时将soemthing添加到队列并进行轮询。这可能吗?
答案 0 :(得分:2)
通常,当一个线程上至少有一个生产者,而另一个线程上至少有一个消费者时,会使用ConcurrentLinkedQueue
。
消费者会在元素可用时立即对元素进行处理,对队列块执行读取操作,有时会在有限的时间内处理。
根据应用程序的不同,您可以拥有一个生产者和许多消费者,或者反之亦然。
阻塞可以完全满足您的要求(消费者线程知道何时插入元素)。
消费者线程阻塞这个事实不是问题,除非你是主要的进程线程,或者除非你打算建立数百个并发消费者。
所以,如果你只是在专用的线程上运行它,队列#take()或队列#pollection(长超时,TimeUnit单元)就是你的朋友。