JUC--阻塞队列与非阻塞队

@[toc]

阻塞队列与非阻塞队区别

队列

主要遵循先进先出,后进后出

阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来,如从队列中移除一个或者多个元素,或者完全清空队列.

  • 阻塞式队列最大的好处,能够防止队列容器溢出,防止数据丢失

  • 非阻塞队性能要好一些,但是安全性,可用性不如阻塞队列

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

非阻塞式队列

ConcurrentLinkedDeque 在这里插入图片描述 ConcurrentLinkedQueue 同上

 ConcurrentLinkedQueue<String> objects = new ConcurrentLinkedQueue<>();

阻塞 队列

在这里插入图片描述

end
  • 作者:yxl(联系作者)
  • 发表时间:2020-08-11 15:17
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 转载声明:如果是转载栈主转载的文章,请附上原文链接
  • 公众号转载:请在文末添加作者公众号二维码(公众号二维码见右边,欢迎关注)
  • 评论