假设我们有两个线程通过ConcurrentLinkedQueue连接。我想要的是队列上的处理程序之类的东西,以便一个线程知道另一个队列何时将 soemthing 添加到队列并轮询它。这可能吗?
当线程上至少有一个生产者,而另一个线程上至少有一个使用者时,使用ConcurrentLinkedQueue
。
使用者将在元素可用时立即处理元素,以对队列块执行读取操作,有时时间有限。
根据应用程序的不同,您可以有一个生产者和许多消费者,反之亦然。
阻塞完全满足您的要求(使用者线程知道何时插入元素(。
使用者线程阻塞的事实不是问题,除非是你的主进程线程,或者除非你计划构建几百个并发使用者。
所以,Queue#take((或 Queue#poll(long timeout,TimeUnit unit(是你的朋友,如果你只是在专用线程上运行它。