阻塞式队列-BlockingQueue简介说明

乔欣 Java教程 发布时间:2022-12-13 22:25:00 阅读数:4869 1
下文笔者讲述阻塞式队列的相关简介说明,如下所示

队列的简介说明

队列:
   遵循先进先出(FIFO)的原则,队列是一种特殊的线性表
   队列也是一种操作受限的表
阻塞式队列:
   我们通常将阻塞添加,阻塞删除的队列称之为“阻塞式队列”

阻塞式队列适用场景

阻塞式队列常用于生产者和消费者模型中
ArrayBlockingQueue:
    阻塞式顺序队列
    是一种BlockingQueue的实现类 
例:
public static void main(String[] args) throws InterruptedException {
		//队列创建时--需要指定容量
		//容量在指定之后不可变
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<>(5);

//向队列中添加元素
queue.add("java265.com-1");
queue.add("java265.com-2");
queue.add("java265.com-3");
queue.add("java265.com-3");
queue.add("java265.com-4");

//当队列已满,则抛出异常 - IllegalStateException
// queue.add("Java爱好者");
// 返回值标记元素是否成功添加到队列里面
// 如果队列已满,则返回false
// boolean t = queue.offer("java265.com-1");
// System.out.println(t);
// 当队列已满,会产生阻塞 --- 直到这个队列中有元素被取出,才会放开阻塞
// queue.put("java--我的最爱");

// 定时阻塞
// 在3s之内如果有元素被取出,那么元素就会添加到队列中
// 当3s之后队列依然是满的,那么返回false表示添加失败
boolean b = queue.offer("java-queue", 3000, TimeUnit.MILLISECONDS);
   System.out.println(b);
   System.out.println(queue);
}

LinkedBlockingQueue-阻塞式链式队列

LinkedBlockingQueue:
    其底层是使用链表进行数据存储,
	初始化时可指定其初始容量,也可以不指定初始容量
	 
    当设置容量,则采用指定容量进行存储
    当未设置容量时,则采用默认容量Integer.MAX_VALUE -> 231 - 1
    即:未指定容量,则可以认为其无限大

PriorityBlockingQueue-具有优先级的阻塞式队列

 当不指定容量,默认容量是11
   当将元素取出,则会对元素进行自然排序
 
 注意事项:
    存储的对象所对应的类必须实现Comparable
    并重写compareTo方法

SynchronousQueue-同步队列

只允许存储1个元素
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202212/5141.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者