首页 > 编程语言 >Java阻塞队列原理

Java阻塞队列原理

时间:2023-06-28 15:36:22浏览次数:28  
标签:Java 队列 阻塞 无界 链表 线程

阻塞队列,关键字是阻塞,先理解阻塞的含义,在阻塞队列中,线程阻塞有这样的两种情况:

1.当队列中没有数据的情况下,消费者端的所有线程都会被自动阻塞(挂起),直到有数据放入队列。

2.当队列中填满数据的情况下,生产者端的所有线程都会自动阻塞(挂起),直到队列中有空的位置,线程被自动唤醒。

阻塞队列的主要方法

Java阻塞队列原理_阻塞队列

抛出异常:抛出一个异常

特殊值:返回一个特殊值(null或false,视情况而定)

阻塞:在成功操作之前,一直阻塞线程

超时:放弃前只在最大的时间内阻塞


Java中的阻塞队列

1.ArrayBlockingQueue:由数组结构组成的有界阻塞队列

2.LinkedBlockingQueue:由链表结构组成的有界阻塞队列

3.PriorityBlockingQueue:支持优先级排序的无界阻塞队列

4.DelayQueue:使用优先级队列实现的无界的阻塞队列

5.SynchronousQueue:不存储元素的阻塞队列

6.LinkedTransferQueue:由链表结构组成的无界阻塞队列

7.LinkedBlockingDeque:由链表结构组成的双向阻塞队列

标签:Java,队列,阻塞,无界,链表,线程
From: https://blog.51cto.com/u_11315052/6572357

相关文章

  • (Python编程)Jython:Java的Python
    ProgrammingPython,3rdEdition翻译最新版本见wiki:http://wiki.woodpecker.org.cn/moin/PP3eD欢迎参与翻译与修订。18.4.Jython:PythonforJava18.4.Jython:Java的PythonJython(formerlyknownasJPython)isanentirelydistinctimpleme......
  • web和java哪个就业更好?
    首先,要区分两种开发语言的特点:Java是一种后台的语言,类似于php,主要做的就是把数据库搭建好,以及数据放置到网页当中,java是比较复杂的编程语言。Web前端开发相对应的职位可能就是一些web前端开发工程师,主要工作是把ui设计师设计好的psd利用html,制作成网页,web前端工程师布局网站的结......
  • java陷阱之不可忽视的慢sql
    说明记录一下,以前处理方式,都是线上cpu告警运维查看数据库mysql提供给研发改。记录一下操作方式,我觉得应该研发定期去上线拿慢sql日志,再做更改,因为很多慢sql在低峰期并不会给数据库性能带来瓶颈但是高峰期来就会遇到高CPU阻塞业务,那个时候再去优化就会很着急  阿里云慢......
  • JAVA 草稿
    1.项目启动报错:Failedtostartbean'documentationPluginsBootstrapper'度娘解释:swagger的匹配模式进行调整导致,导致默认的匹配默认在springboot中不会使用,导致报错。处理方式:(不建议降低springboot版本,调整太大了)spring:mvc:pathmatch:matching-strategy......
  • java 解析csv
    opencsvjava读取csv的类库主要有两种,opencsv和javacsv,研究发现,javacsv最后一次更新是2014-12-10,很久不维护了。opencsv是apache的项目,并且至今仍在维护,所以决定使用opencsv。csvcsv文件,全名commaseparatedvalues,默认以逗号分隔,是纯文本文件。虽然用excel打开后格式排版了,但是那......
  • java 序列化 serialVersionUID transient
    问题再现User类实现了序列化,但是没有声明版本号,这个对象放在memcache中,User新添加了1个字段后,把之前的对象从缓存中取出来时,出现了InvalidClassException,为什么会出现这个错误?序列化序列化就是将对象转为流,用于传输或保存。序列化的是“对象状态”,所以就不包括静态变量;反序列化是从......
  • java8 LocalDateTime/LocalDate/LocalTime、java.util.Date/java.sql.Date区别及日期
    先介绍一下,LocalDateTime/LocalDate/LocalTime、java.util.Date/java.sql.Date区别LocalDateTime/LocalDate/LocalTimejava.time.LocalDateTime,是一个日期+时间,不带时区,它是个不可更改对象,精确到纳秒。它的日期可以认为是生日,它的时间可以认为是挂钟的时间,比较LocalDateTime时用eq......
  • 在linux上启动arthas报“Can not find java process”
    发生背景完整报错信息:[***@localhost~]$java-jararthas-boot.jar[INFO]JAVA_HOME:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b03-1.el7.x86_64/jre[INFO]arthas-bootversion:3.6.9[INFO]Cannotfindjavaprocess.Trytorun`jps`commandliststheinstrume......
  • 3、Apache Kudu集成impala(shell和java操作)的详细操作
    ApacheKudu系列文章1、ApacheKudu介绍及架构、工作原理、两种部署方式、使用限制详解2、ApacheKudu-javaapi操作kudu详细示例以及kudu的三种实现示例3、ApacheKudu集成impala(shell和java操作)的详细操作(文章目录)本文简单的介绍了通过impala操作kudu,包括通过shell和......
  • 浅谈 Kotlin 与 Java 互操作 (上)
    前言浅谈Kotlin与Java互操作(上)Kotlinis100%interoperablewithJavaandAndroidKotlin官网的一句标语,其旨意是表达kotlin的Interoperable-互操作特性互操作就表示Kotlin中可以调用Java的开放接口来访问成员属性和成员方法,同时在Java代码中也百分百兼容Kotlin......