欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1 并发队列

程序员文章站 2022-05-04 15:08:58
...

在并发队列上JDK提供了两套实现,

  • 一个是以ConcurrentLinkedQueue为代表的高性能队列非阻塞,
  • 一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue

1 并发队列

阻塞队列非阻塞队列

常用的并发队列有阻塞队列非阻塞队列,前者使用实现,后者则使用 CAS 非阻塞算法实现。

PS:至于非阻塞队列是靠 CAS 非阻塞算法,在这里不再介绍,大家只用知道,Java 非阻塞队列是使用 CAS 算法来实现的就可以。

阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。

试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来,如从队列中移除一个或者多个元素,或者完全清空队列。

1. ArrayDeque, (数组双端队列) 
2. PriorityQueue, (优先级队列) 
3. ConcurrentLinkedQueue, (基于链表的并发队列) 
4. DelayQueue, (延期阻塞队列)(阻塞队列实现了BlockingQueue接口) 
5. ArrayBlockingQueue, (基于数组的并发阻塞队列) 
6. LinkedBlockingQueue, (基于链表的FIFO阻塞队列) 
7. LinkedBlockingDeque, (基于链表的FIFO双端阻塞队列) 
8. PriorityBlockingQueue, (带优先级的*阻塞队列) 
9. SynchronousQueue (并发同步阻塞队列)

目的

1 并发队列