`

JDK学习--java.util.concurrent阻塞队列--1

阅读更多
Tiger提供的 java.util.concurrent 包在 集合框架 中加入了 BlockingQueue 接口和五个阻塞队列类。简单的讲,阻塞队列的意思就是当队列无空间时,添加元素的线程执行操作阻塞,直到有空间;或者是,当队列为空无元素可删时,执行删除的线程阻塞,知道有元素可删。BlockingQueue 接口的 Javadoc 给出了阻塞队列的基本用法,如清单 7 所示。生产者中的 put() 操作会在没有空间可用时阻塞,而消费者的 take() 操作会在队列中没有任何东西时阻塞。

另外五个阻塞队列提供的情况各有不同:

    * ArrayBlockingQueue:一个由数组支持的有界队列。
    * LinkedBlockingQueue:一个由链接节点支持的可选有界队列。
    * PriorityBlockingQueue:一个由优先级堆支持的无界优先级队列。
    * DelayQueue:一个由优先级堆支持的、基于时间的调度队列。
    * SynchronousQueue:一个利用 BlockingQueue 接口的简单聚集(rendezvous)机制



前两个类 ArrayBlockingQueue 和 LinkedBlockingQueue 几乎相同,只是在底层存储实现方面有所不同,LinkedBlockingQueue 并不总是有容量界限。无大小界限的 LinkedBlockingQueue 类在添加元素时永远不会有阻塞队列的等待(至少在其中有 Integer.MAX_VALUE 元素之前不会,这个时候采用的容量限制即是Integer.MAX_VALUE)。
分享到:
评论

相关推荐

    Ja-netfiter-2022.2.0 主要更新对 jdk 17的兼容

    jdk 17需要 新增 配置 如下 jvm参数 --add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED --add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED

    bcprov-jdk16-143.jar和bcprov-jdk15-135.jar

    在jdk中的jre\lib\security修改java.security文件, security.provider.6=com.sun.security.sasl.Provider 下面添加 security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider 在\jre\lib\ext中...

    jdk-8u202-linux-arm64-vfp-hflt.tar.gz

    jdk-8u202-linux-arm64-vfp-hflt.tar.gz适用于Linux ARM v6/v7 Soft Float ABI 64位系统,是在Binary Code ...JAVA JDK软件是整个Java的核心,不仅操作很简单,而且JAVA JDK有着实用、稳定、安全、高效的特色功能。

    java-jdk1.8-8u361-all-jdk-win-linux

    java-jdk1.8-8u361-all-jdk-win-linux 该压缩包中包含jdk1.8-8u361下windows版本和linux版本,其包含快速安装包和对应的jdk压缩包版本,具体内容如下: jdk-8u361-linux-aarch64.rpm jdk-8u361-linux-i586.rpm jdk-8...

    jdk-8u241-linux-arm64-vfp-hflt.tar.gz

    jdk-8u241-linux-arm64-vfp-hflt.tar.gz 64位的ArmLinux系统java jdk

    bcprov-jdk16-1.45.jar.zip

    如下:首先在jdk包中 编辑jdk1.8_014\jre\lib\security\java.security 文件 增加这行 security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider 其次,把bcprov-jdk16-1.45.jar添加到到 jre\...

    jdk-8u281-linux-x64.tar.gz.zip

    1.下载后重命名:jdk-8u281-linux-x64.tar.gz 2.解压 tar -zxvf jdk-8u281-linux-x64.tar.gz 3.配置环境变量:vim /etc/profile 最后添加: export JAVA_HOME=/opt/jdk export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$...

    bcmail-jdk14-1.38-API文档-中文版.zip

    标签:bouncycastle、bcmail、jdk14、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译...

    JDK研究系列--》util.concurrent(java.util part3)

    合适研究底层研发员,但,一般程序员也必须掌握的要点 JDK研究系列--》util.concurrent(java.util part3)

    mapstruct-jdk8-1.2.0.Final-API文档-中文版.zip

    标签:mapstruct、jdk8、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用...

    jdk1.8.0-331.tar.gz 安装包

    jdk1.8.0_331.tar.gz,Java1.8.0_331包

    jdk-8u111-linux-arm64-vfp-hflt.tar.gz

    jdk-8u111-linux-arm64-vfp-hflt.tar.gz

    jdk-8u151-linux-arm64-vfp-hflt.tar.gz

    jdk-8u151-linux-arm64-vfp-hflt.tar.gz.................................................................................................

    jdk-8u301-linux.zip

    (1)jdk-8u301-linux-aarch64.rpm (2)jdk-8u301-linux-aarch64.tar.gz (3)jdk-8u301-linux-arm32-vfp-hflt.tar.gz (4)jdk-8u301-linux-i586.rpm (5)jdk-8u301-linux-i586.tar.gz (6)jdk-8u301-linux-x64....

    bcprov-jdk15on-1.56.jar中文文档.zip

    bcprov-jdk15on-***.jar中文文档.zip,java,bcprov-jdk15on-***.jar,org.bouncycastle,bcprov-jdk15on,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,bouncycastle,bcprov,jdk15on,中文API文档,手册,...

    bcprov-jdk15on-1.54.jar bcprov-ext-jdk15on-1.54.jar下载

    2.将下载的两个JAR文件复制到:JDK安装目录\jre\lib\ext下,例如我的就是D:\Program Files (x86)\java\JDK1.6\jre\lib\ext 3.打开java.security文件:在JDK安装目录\jre\lib\security下的java.security文件。

    jdk-8u202-linux-arm32-vfp-hflt.tar.gz

    jdk-8u202-linux-arm32-vfp-hflt.tar.gz适用于Linux ARM v6/v7 Soft Float ABI 32位系统,是在Binary Code ...JAVA JDK软件是整个Java的核心,不仅操作很简单,而且JAVA JDK有着实用、稳定、安全、高效的特色功能。

    jdk-8u213-linux-arm64-vfp-hflt.tar.zip

    官方 jdk1.8 jdk-8u213-linux-arm64-vfp-hflt.tar.zip

    jdk-java-version-1.8.0.45.rar

    64位的jdk安装文件,Java-version-1.8.0_45版本,可以直接下载。

    jdk-7u75-linux-arm-vfp-sflt.tar.gz

    Java Development Kit (JDK)是一款Java 语言的软件开发工具包。JAVA JDK软件是整个Java的核心,不仅操作很简单,而且JAVA JDK有着实用、稳定、安全、高效的特色功能,JAVA JDK软件是帮助你学好Java的第一步。

Global site tag (gtag.js) - Google Analytics