SynchronousQueue 这个队列实现了 BlockingQueue接口
该队列的特点
1.容量为0,无论何时 size方法总是返回0
2. put操作阻塞,直到另外一个线程取走队列的元素。
3.take操作阻塞,直到另外的线程put某个元素到队列中。
4. 任何线程只能取得其他线程put进去的元素,而不会取到自己put进去的元素
public static void main(String[] args) throws InterruptedException { final SynchronousQueue<Integer> queue = new SynchronousQueue<Integer>(); new Thread() { @Override public void run() { try { while (true) { System.out.println("size1:" + queue.size()); System.out.println("element:" + queue.take()); System.out.println("size2:" + queue.size()); } } catch (InterruptedException e) { e.printStackTrace(); } } }.start(); queue.put(1); queue.put(2); queue.put(3); }
该队列的一个应用在 ThreadPoolExecutor
相关推荐
Java并发编程中,为了在多线程环境下保证数据的一致性和安全性,`java.util.concurrent`包提供了多种线程安全的容器。以下是对标题和描述中提及的一些并发容器的详细解释: 1. **ConcurrentHashMap**: 是线程安全的...
通过学习这个PPT教案,开发者可以深入了解Java并发编程的实践技巧,包括如何正确使用线程池、选择合适的并发容器以及如何实现线程间的安全通信,从而编写出更高效、更可靠的多线程程序。在实际工作中,这些知识对于...
### Java并发工具包 `java.util.concurrent` 知识点详解 #### 一、引言 随着多核处理器的普及和应用程序复杂度的增加,多线程编程成为了现代软件开发不可或缺的一部分。为了简化并发编程的复杂性,Java 5 引入了 `...
在Java编程中,`BlockingQueue`是一个非常重要的并发容器,它是Java并发包`java.util.concurrent`中的核心组件。`BlockingQueue`实现了一种线程安全的数据结构,它能够有效地协调生产者和消费者的动作,实现高效的...
Java编程思想中关于并发的总结 本文将为您总结Java编程思想中关于并发的知识点,包括并发解决的问题、并发的实现方式、Java的线程机制、...这些知识点可以帮助您更好地理解Java并发编程,编写更加高效的多线程程序。
同步器,如`Semaphore`(信号量)、`CyclicBarrier`(屏障/关卡)和`CountDownLatch`(计数门),是Java并发编程中的重要工具。`Semaphore`可以限制同时访问特定资源的线程数量,`CyclicBarrier`则要求所有线程都到达一个...
Java并发编程是Java开发中的重要组成部分,特别是在多核处理器和高并发应用环境下,高效地管理线程资源变得至关重要。`java.util.concurrent` 包(简称JUC)是Java提供的一个强大的并发工具包,它提供了丰富的并发...
并发容器是Java并发编程中的重要组成部分,它们提供了比传统集合类更强大的线程安全性。以下是一些关键的并发容器类型及其特点: - **队列** - **阻塞队列**:是一种特殊的队列,当队列为空时,从队列中获取元素的...
线程池是Java并发编程的核心组成部分之一,它允许预先创建和复用一组线程,从而避免了频繁创建和销毁线程所带来的开销。`java.util.concurrent`包中提供了多种线程池实现,包括: ##### 2.1 ExecutorService 接口 ...
Java集合框架提供了一系列的容器类,用于存储和检索对象。主要包括: - **Arrays**:提供了一系列操作数组的静态方法。 - **Collections**:提供了操作和返回集合的静态方法。 - **ArrayList**:实现了 List 接口,...
12. **并发容器**:如`ConcurrentHashMap`, `CopyOnWriteArrayList`等,它们提供了线程安全的数据结构。 13. **线程间通信**:`join()`方法使一个线程等待另一个线程结束,`yield()`方法让当前线程暂停,让其他线程...
- **SynchronousQueue实现原理**:一个不存储元素的阻塞队列,适用于传递任务。 - **自定义类的应用场景**:当现有类无法满足需求时,可以自定义类来实现特定功能。 - **双亲委派模型**:类加载机制的一部分,确保类...
Java多线程之BlockingQueue深入分析 Java多线程中,BlockingQueue是一种特殊的队列,它可以为线程同步提供有力的保障。在Java多线程(五)之BlockingQueue深入分析中,我们将深入分析BlockingQueue的定义、常用方法...
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................