【发布时间】:2013-07-19 14:11:51
【问题描述】:
我正在使用 LinkedBlockingQueue 和生产者/消费者模式来缓冲任务。要将任务添加到队列中,我使用生产者的方法:Queue.put(Object);要从我用于消费者的队列中获取任务:Queue.take(Object);
我在 Java api 中发现这两种方法都会阻塞,直到队列可用。我的问题是:我知道在我的系统中有更多的任务生产者而不是消费者。我所有的任务都需要处理。所以我需要我的消费者在被阻塞时优先于生产者来获取队列。
他们有办法做到这一点而无需过多地改变 LinkedBlockingQueue 的方法吗?
【问题讨论】:
-
据我所知,这个队列在设计上不会阻塞消费者,即使生产者由于队列已满而被阻塞。
标签: java concurrency