1.BlockingQueue是什么?
BlockingQueue是位于java.util.concurrent包下的一个类,他表示一个队列,在进行检索或移除一个元素的时候,他会等待队列变为非空;当在添加一个元素时,它会等待队列中的可用空间。 BlockingQueue接口是Java集合框架的一部分,主要用于实现生产者-消费者模式。我们不需要担心等待生产者有可用的空间,或消费者有可用的对象,因为它都在 BlockingQueue的实现类中被处理了。Java提供了集中BlockingQueue的实现,比如 ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue,、 SynchronousQueue等。
2.在 Queue 中poll()和remove()有什么区别?
- 相同点:都是返回第一个元素,并在队列中删除返回的对象。
- 不同点:如果没有元素 poll()会返回 null,而 remove()会直接抛出 NoSuchElementException 异常。
