阻塞队列是线程安全的吗(阻塞队列 线程安全)

阻塞队列是线程安全的吗(阻塞队列 线程安全)队列是一种特殊的线性表 它只允许在表的前端进行删除操作 而在表的后端进行插入操作 顶级接口为 java util queue nbsp java util 包中 java util concurrent 包中有多种实现 其简易类图如下 非阻塞队列与阻塞队列 它们都是线程安全的 即不能有一个以上的线程同时对队列进行入队或者出队操作 无需担心在多线程并发环境所带来的不可预知的问题

大家好,我是讯享网,很高兴认识大家。



队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。

顶级接口为java.util.queue. 

java.util包中,java.util.concurrent包中有多种实现。其简易类图如下:

java 队列 线程安全 java 队列 queue 线程安全_阻塞队列
讯享网

非阻塞队列与阻塞队列,它们都是线程安全的(即不能有一个以上的线程同时对队列进行入队或者出队操作),无需担心在多线程并发环境所带来的不可预知的问题。阻塞与否在于是否有界,也就是在初始化时有没有给它一个默认的容量大小。

       对于阻塞有界队列来讲,如果队列满了的话,则任何线程都会阻塞不能进行入队操作,反之队列为空的话,则任何线程都不能进行出队操作。

       对于非阻塞无界队列来讲则不会出现队列满或者队列空的情况。它们俩都保证线程的安全性。

  • ConcurrentLinkedQueue:是一个基于链接节点的无界线程安全队列
  • PriorityQueue:是一个基于数组实现的队列
  • ArrayBlockingQueue:一个由数组结构组成的有界阻塞队列。
  • LinkedBlockingQueue:一个由链表结构组成的有界阻塞队列。 
  • PriorityBlockingQueue:一个支持优先级排序的无界阻塞队列。 
  • DealyQueue:一个使用优先级队列实现的无界阻塞队列。 
  • SynchronousQueue:一个不存储元素的阻塞队列。 
  • LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。 
  • LinkedBlockingDeque:一个由链表结构组成的双向阻塞队列。 

源码如下:

 

————————自己实现的一个阻塞队列—————————————————————————-

测试的main方法

 

小讯
上一篇 2025-04-20 21:19
下一篇 2025-06-13 19:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/202923.html