`

java并发容器之 SynchronousQueue

 
阅读更多

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

分享到:
评论

相关推荐

    14个Java并发容器,你用过几个?.docx

    Java并发编程中,为了在多线程环境下保证数据的一致性和安全性,`java.util.concurrent`包提供了多种线程安全的容器。以下是对标题和描述中提及的一些并发容器的详细解释: 1. **ConcurrentHashMap**: 是线程安全的...

    Java并发编程实践分享PPT教案学习.pptx

    通过学习这个PPT教案,开发者可以深入了解Java并发编程的实践技巧,包括如何正确使用线程池、选择合适的并发容器以及如何实现线程间的安全通信,从而编写出更高效、更可靠的多线程程序。在实际工作中,这些知识对于...

    java并发工具包 java.util.concurrent中文版pdf

    ### Java并发工具包 `java.util.concurrent` 知识点详解 #### 一、引言 随着多核处理器的普及和应用程序复杂度的增加,多线程编程成为了现代软件开发不可或缺的一部分。为了简化并发编程的复杂性,Java 5 引入了 `...

    并发容器——BlockingQueue相关类

    在Java编程中,`BlockingQueue`是一个非常重要的并发容器,它是Java并发包`java.util.concurrent`中的核心组件。`BlockingQueue`实现了一种线程安全的数据结构,它能够有效地协调生产者和消费者的动作,实现高效的...

    Java编程思想中关于并发的总结

    Java编程思想中关于并发的总结 本文将为您总结Java编程思想中关于并发的知识点,包括并发解决的问题、并发的实现方式、Java的线程机制、...这些知识点可以帮助您更好地理解Java并发编程,编写更加高效的多线程程序。

    浅谈Java线程并发知识点

    同步器,如`Semaphore`(信号量)、`CyclicBarrier`(屏障/关卡)和`CountDownLatch`(计数门),是Java并发编程中的重要工具。`Semaphore`可以限制同时访问特定资源的线程数量,`CyclicBarrier`则要求所有线程都到达一个...

    java.util.concurrent 实现线程池队列

    Java并发编程是Java开发中的重要组成部分,特别是在多核处理器和高并发应用环境下,高效地管理线程资源变得至关重要。`java.util.concurrent` 包(简称JUC)是Java提供的一个强大的并发工具包,它提供了丰富的并发...

    多线程编程.docx

    并发容器是Java并发编程中的重要组成部分,它们提供了比传统集合类更强大的线程安全性。以下是一些关键的并发容器类型及其特点: - **队列** - **阻塞队列**:是一种特殊的队列,当队列为空时,从队列中获取元素的...

    Concurrent In java

    线程池是Java并发编程的核心组成部分之一,它允许预先创建和复用一组线程,从而避免了频繁创建和销毁线程所带来的开销。`java.util.concurrent`包中提供了多种线程池实现,包括: ##### 2.1 ExecutorService 接口 ...

    Java进阶路线

    Java集合框架提供了一系列的容器类,用于存储和检索对象。主要包括: - **Arrays**:提供了一系列操作数组的静态方法。 - **Collections**:提供了操作和返回集合的静态方法。 - **ArrayList**:实现了 List 接口,...

    java面试题_多线程(68题)

    12. **并发容器**:如`ConcurrentHashMap`, `CopyOnWriteArrayList`等,它们提供了线程安全的数据结构。 13. **线程间通信**:`join()`方法使一个线程等待另一个线程结束,`yield()`方法让当前线程暂停,让其他线程...

    后端开发基础知识整理JAVA、JVM、操作系统、网络、设计模式、mysql、redis、多线程、spring、springboo

    - **SynchronousQueue实现原理**:一个不存储元素的阻塞队列,适用于传递任务。 - **自定义类的应用场景**:当现有类无法满足需求时,可以自定义类来实现特定功能。 - **双亲委派模型**:类加载机制的一部分,确保类...

    Java多线程(五)之BlockingQueue深入分析

    Java多线程之BlockingQueue深入分析 Java多线程中,BlockingQueue是一种特殊的队列,它可以为线程同步提供有力的保障。在Java多线程(五)之BlockingQueue深入分析中,我们将深入分析BlockingQueue的定义、常用方法...

    JAVA核心知识点整理(有效)

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

Global site tag (gtag.js) - Google Analytics