数据结构与算法是天生一对。

BlockingQueue叫做阻塞队列,在Java线程池相关的实现中有广泛的使用。

BlockingQueue实现的功能如下:

  • 当队列为空时,往队列中读数据将被阻塞。
  • 当队列满时,往队列中写数据将被阻塞。

在juc中BlockingQueue主要实现有

  • ArrayBlockingQueue
  • LinkedBlockingQueue

两种的区别在于队列的实现方式不同,一个为数组一个为列表。

其内部实现是通过ReentrantLock实现。其中定义两个Condition

  • notFull
  • notEmpty

当插入数据成功后将调用notEmpty,这样所有在队列为空时获取数据线程唤醒。
当移除数据成功后将调用notFull,这样所有在队列满时插入数据的线程唤醒。

相关文章:

  • 2021-09-16
  • 2021-08-20
  • 2022-01-11
  • 2021-05-01
  • 2021-07-01
  • 2021-11-04
猜你喜欢
  • 2021-12-11
  • 2022-12-23
  • 2021-11-29
  • 2021-07-27
  • 2021-06-28
相关资源
相似解决方案