n 个线程产生一个BlockingQueue
。当队列已满时,消费者排空队列并进行一些处理。
我应该如何在以下两种实施选择之间做出决定?
选择A:消费者定期轮询队列以检查它是否已满,所有写入者都在等待(毕竟这是一个阻塞队列:)。
选择 B:我使用同步的“放置”方法实现了我自己的队列。在放置提供的元素之前,我测试队列是否接近满(满减 1 个元素)。然后我放置元素并通知我的消费者(正在等待)。
第一个解决方案是最简单的,但会轮询;这让我很恼火。在我看来,第二种解决方案更容易出错,并且需要更多的编码。