`

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)。
分享到:
评论

相关推荐

    jdk-8u20-docs-all.zip

    - `java.lang.Thread`和`java.util.concurrent`:提供了多线程编程的支持,包括创建和管理线程、线程同步和并发工具。 4. **JDBC**: - `java.sql`:提供了与数据库交互的接口和类,如`Connection`、`Statement`...

    jdk-api-1.6-English.rar_API1.6 Engli_jdk 6 api en_jdk1.6 api en_

    2. **并发处理**:在JDK 1.6中,引入了`java.util.concurrent`包,包含了许多并发工具类,如线程池、同步容器、并发队列等,提高了多线程程序的可维护性和性能。 3. **动态代理**:`java.lang.reflect.Proxy`类和`...

    backport-util-concurrent_java_backport_源码.zip

    backport-util-concurrent是一个Java库,它的主要目的是将Java 5中的并发工具类(java.util.concurrent)回移植到Java 1.3和1.4等早期版本。这个库使得开发者在不支持Java 5新特性的环境中也能使用高级的并发控制...

    A-JUC-JVM-Java并发知识..pdf

    Java并发编程包(java.util.concurrent,简称JUC)封装了大量用于高并发编程的工具类和接口,其中涉及了线程池、阻塞队列、同步器、原子操作类等。在并发环境下,可以有效降低线程创建和管理的复杂性。 #### Java...

    java的concurrent用法详解

    随着Java 1.5的发布,Sun公司(现在是Oracle公司的一部分)引入了`java.util.concurrent`包,这是一个革命性的进步,极大地简化了并发编程的工作,并增强了程序的稳定性和效率。通过`java.util.concurrent`提供的...

    JDK_API_1.8

    1. **基础类库**:包括`java.lang`、`java.io`、`java.util`等包。`java.lang`是所有Java程序的基础,包含了基本类型转换、对象创建、异常处理等基础功能。`java.io`提供了输入/输出流,用于数据的读写操作。`java....

    Java并发编程--BlockingQueue.docx

    BlockingQueue 是 Java 并发包(java.util.concurrent)中的一个接口,它扩展了 Queue 接口,并引入了线程安全的特性,特别适合于多线程环境下的数据共享。 BlockingQueue 的核心设计是其在并发环境下提供了高效的...

    java 银行业务队列简单模拟

    在Java中,我们可以使用JDK提供的`java.util.concurrent`包中的`BlockingQueue`接口来实现线程安全的队列。`BlockingQueue`提供了一种在多线程环境下安全插入、删除和检查元素的方法,同时支持阻塞操作,当队列为空...

    实战Java高并发程序设计第二版随书代码

    - **java.util.concurrent** 包:学习并发工具类,如Semaphore(信号量)、CountDownLatch(计数器)、CyclicBarrier(回环栅栏)、Exchanger(交换器)等,它们提供了高级并发控制手段。 3. **并发容器** - **...

    Java JDK1.5 生产消费者模式解决方案

    在JDK 1.5及以后的版本中,Java引入了`java.util.concurrent`包,其中包含了一些强大的并发工具类,如`Lock`接口和`Condition`接口,这些工具大大提升了生产者消费者模式的实现效率和线程安全性。 生产者消费者模式...

    JavaAPI文档中文版

    `java.util`包含了集合框架、日期时间、队列、栈、散列映射等常用工具类。 2. **集合框架**:在`java.util`包中,集合框架是Java API的重要组成部分,它提供了List、Set、Map等接口,以及ArrayList、LinkedList、...

    [Java并发编程实践].(Java.Concurrency.in.Practice).Brian.Goetz.文字版

    - `java.util.concurrent`包中的关键类和接口介绍。 3. **线程安全与同步机制** - 线程安全性的定义及其重要性。 - 同步方法与块的使用场景及优缺点。 - 不同类型的锁(如ReentrantLock)以及它们的工作原理。 ...

    JavaAPI超全

    Java API是Java编程语言的核心,它是Java开发工具包(JDK)的一部分,为开发者提供了大量预定义的类和方法,方便进行各种计算、输入/输出、网络通信、数据处理等任务。这个“Java API超全”文件包含了46个常用的Java...

    JDK自带的延迟队列-DelayQueue

    在Java的并发编程中,`DelayQueue`是一个非常特殊的队列,它属于并发包`java.util.concurrent`的一部分。`DelayQueue`是一个基于优先级队列(PriorityQueue)实现的无界阻塞队列,它的主要特性是元素只有在达到指定...

    Java API文档中文版

    1. **基础类库**:这是Java的核心,包括`java.lang`、`java.io`、`java.util`等包,涵盖了基本类型操作、输入/输出、集合框架、日期时间处理等功能。 - `java.lang`包:所有Java程序都会自动导入这个包,包含了如`...

    良葛格Java JDK 5.0学习笔记

    10. **并发改进**:JDK 5.0引入了`java.util.concurrent`包,提供了高级并发工具,如线程池、阻塞队列、同步器等,使得多线程编程更加高效和易于管理。 这些只是JDK 5.0中部分重要的新特性。通过深入学习《良葛格...

    JavaThread.pdf

    - 通过java.util.concurrent包下的BlockingQueue实现,可以创建生产者消费者模型。 - 阻塞队列包括ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue、DelayQueue等,提供线程安全的队列操作。 7....

    Java并发编程实践-03章-使用JDK并发包构建程序1

    JDK并发包(java.util.concurrent)提供了丰富的工具和类,使得开发人员能够有效地管理和控制并发执行的任务。本章将深入探讨如何使用JDK并发包来构建程序。 **3.1 java.util.concurrent概述** `java.util....

    Java 常见并发容器总结

    JDK 提供的这些容器大部分在 `java.util.concurrent` 包中。 - **`ConcurrentHashMap`** : 线程安全的 `HashMap` - **`CopyOnWriteArrayList`** : 线程安全的 `List`,在读多写少的场合性能非常好,远远好于 `...

Global site tag (gtag.js) - Google Analytics