java高并发中的BlockingQueue分析

本篇内容主要讲解“java高并发中的BlockingQueue分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java高并发中的BlockingQueue分析”吧!

创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都做网站、大同网络推广、微信小程序开发、大同网络营销、大同企业策划、大同品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供大同建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

BlockingQueue就是阻塞队列。在某些情况下对阻塞队列的访问可能会造成阻塞。

java高并发中的BlockingQueue分析

会产生阻塞的情况有以下两种:

  1. 当队列满之后,进行入队操作;

  2. 当队列空之后,进行出队操作;

 因此,当一个线程对一个队列已满的情况下进行入队操作就会产生阻塞,除非有另一个线程进行出队列操作。同样当一个线程对一个空队列进行出队操作时也会被阻塞,除非有另一个线程进行入队操作。

    根据上面的特性可以知道,阻塞队列是线程安全的。通常用在生产者消费者场景。

实现类 ArrayBlockingQueue

    ArrayBlockingQueue是一个有界的阻塞队列(容量有限),内部使用数组实现,以先进先出的方式存储数据

实现类DelayQueue

    DelayQueue阻塞的是内部元素,DelayQueue中的元素必须实现一个接口,是J.U.C中的Delay接口(继承了Comparable接口)。DelayQueue中的元素需要进行排序。一般情况下按照元素过期时间的优先级进行排序。

    DelayQueue的使用场景:定时关闭连接、缓存对象、超时处理等。

实现类LinkedBlockingQueue

LinkedBlockingQueue的大小和配置是可选的,如果初始化时指定了一个大小,那么就是有边界的;如果不指定大小,那么就是无边界的(默认最大整型值,内部实现是一个链表)。也是以先进先出的方式存储数据。

实现类PriorityBlockingQueue

这是一个带优先级的阻塞队列,同时也是一个无边界的队列,但是有排序规则的。需要注意的是PriorityBlockingQueue是允许插入null(空对象)的。插入PriorityBlockingQueue的对象必须实现comparable接口,队列优先级的排序规则就是按照对接口实现来定义的。

实现类SynchronousQueue

内部仅允许容纳一个元素,当一个线程插入一个元素后就会被阻塞,除非元素被另一个线程消费。因此又称之为同步队列。是一个无界非缓存的队列,准确的说他不存储元素,只有等待元素取走之后才能放入。

到此,相信大家对“java高并发中的BlockingQueue分析”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

当前文章:java高并发中的BlockingQueue分析
网站地址:https://www.cdcxhl.com/article36/ggpdpg.html

成都网站建设公司_创新互联,为您提供品牌网站设计外贸网站建设标签优化网站导航网站改版静态网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站建设网站维护公司