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)。
分享到:
相关推荐
- `java.lang.Thread`和`java.util.concurrent`:提供了多线程编程的支持,包括创建和管理线程、线程同步和并发工具。 4. **JDBC**: - `java.sql`:提供了与数据库交互的接口和类,如`Connection`、`Statement`...
2. **并发处理**:在JDK 1.6中,引入了`java.util.concurrent`包,包含了许多并发工具类,如线程池、同步容器、并发队列等,提高了多线程程序的可维护性和性能。 3. **动态代理**:`java.lang.reflect.Proxy`类和`...
backport-util-concurrent是一个Java库,它的主要目的是将Java 5中的并发工具类(java.util.concurrent)回移植到Java 1.3和1.4等早期版本。这个库使得开发者在不支持Java 5新特性的环境中也能使用高级的并发控制...
Java并发编程包(java.util.concurrent,简称JUC)封装了大量用于高并发编程的工具类和接口,其中涉及了线程池、阻塞队列、同步器、原子操作类等。在并发环境下,可以有效降低线程创建和管理的复杂性。 #### Java...
随着Java 1.5的发布,Sun公司(现在是Oracle公司的一部分)引入了`java.util.concurrent`包,这是一个革命性的进步,极大地简化了并发编程的工作,并增强了程序的稳定性和效率。通过`java.util.concurrent`提供的...
1. **基础类库**:包括`java.lang`、`java.io`、`java.util`等包。`java.lang`是所有Java程序的基础,包含了基本类型转换、对象创建、异常处理等基础功能。`java.io`提供了输入/输出流,用于数据的读写操作。`java....
BlockingQueue 是 Java 并发包(java.util.concurrent)中的一个接口,它扩展了 Queue 接口,并引入了线程安全的特性,特别适合于多线程环境下的数据共享。 BlockingQueue 的核心设计是其在并发环境下提供了高效的...
在Java中,我们可以使用JDK提供的`java.util.concurrent`包中的`BlockingQueue`接口来实现线程安全的队列。`BlockingQueue`提供了一种在多线程环境下安全插入、删除和检查元素的方法,同时支持阻塞操作,当队列为空...
- **java.util.concurrent** 包:学习并发工具类,如Semaphore(信号量)、CountDownLatch(计数器)、CyclicBarrier(回环栅栏)、Exchanger(交换器)等,它们提供了高级并发控制手段。 3. **并发容器** - **...
在JDK 1.5及以后的版本中,Java引入了`java.util.concurrent`包,其中包含了一些强大的并发工具类,如`Lock`接口和`Condition`接口,这些工具大大提升了生产者消费者模式的实现效率和线程安全性。 生产者消费者模式...
`java.util`包含了集合框架、日期时间、队列、栈、散列映射等常用工具类。 2. **集合框架**:在`java.util`包中,集合框架是Java API的重要组成部分,它提供了List、Set、Map等接口,以及ArrayList、LinkedList、...
- `java.util.concurrent`包中的关键类和接口介绍。 3. **线程安全与同步机制** - 线程安全性的定义及其重要性。 - 同步方法与块的使用场景及优缺点。 - 不同类型的锁(如ReentrantLock)以及它们的工作原理。 ...
Java API是Java编程语言的核心,它是Java开发工具包(JDK)的一部分,为开发者提供了大量预定义的类和方法,方便进行各种计算、输入/输出、网络通信、数据处理等任务。这个“Java API超全”文件包含了46个常用的Java...
在Java的并发编程中,`DelayQueue`是一个非常特殊的队列,它属于并发包`java.util.concurrent`的一部分。`DelayQueue`是一个基于优先级队列(PriorityQueue)实现的无界阻塞队列,它的主要特性是元素只有在达到指定...
1. **基础类库**:这是Java的核心,包括`java.lang`、`java.io`、`java.util`等包,涵盖了基本类型操作、输入/输出、集合框架、日期时间处理等功能。 - `java.lang`包:所有Java程序都会自动导入这个包,包含了如`...
10. **并发改进**:JDK 5.0引入了`java.util.concurrent`包,提供了高级并发工具,如线程池、阻塞队列、同步器等,使得多线程编程更加高效和易于管理。 这些只是JDK 5.0中部分重要的新特性。通过深入学习《良葛格...
- 通过java.util.concurrent包下的BlockingQueue实现,可以创建生产者消费者模型。 - 阻塞队列包括ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue、DelayQueue等,提供线程安全的队列操作。 7....
JDK并发包(java.util.concurrent)提供了丰富的工具和类,使得开发人员能够有效地管理和控制并发执行的任务。本章将深入探讨如何使用JDK并发包来构建程序。 **3.1 java.util.concurrent概述** `java.util....
JDK 提供的这些容器大部分在 `java.util.concurrent` 包中。 - **`ConcurrentHashMap`** : 线程安全的 `HashMap` - **`CopyOnWriteArrayList`** : 线程安全的 `List`,在读多写少的场合性能非常好,远远好于 `...