`
spring5365
  • 浏览: 72002 次
  • 性别: Icon_minigender_1
  • 来自: 钓鱼岛
社区版块
存档分类
最新评论

LinkedBlockingQueue

 
阅读更多
    /**
     在队列尾插入指定元素
     **/
    public void put(E e) throws InterruptedException {
        if (e == null) throw new NullPointerException();
        int c = -1;
        final ReentrantLock putLock = this.putLock;
        final AtomicInteger count = this.count;
        putLock.lockInterruptibly();
        try {
            try {
                //当队列已满,插入队列的线程等待
                while (count.get() == capacity)
                    notFull.await();
            } catch (InterruptedException ie) {
                notFull.signal();
                throw ie;
            }
            insert(e);
            c = count.getAndIncrement();
            //队列未满,释放插入队列的等待线程
            if (c + 1 < capacity)
                notFull.signal();
        } finally {
            putLock.unlock();
        }
        //队列为空时,可能有取数据的线程等,此时已有数据加入队列,释放取数据的线程
        if (c == 0)
            signalNotEmpty();
    }

 

分享到:
评论

相关推荐

    linkedblockingqueue

    《LinkedBlockingQueue深度解析与应用实践》 在Java并发编程领域,`LinkedBlockingQueue`是一个不可或缺的工具。作为`java.util.concurrent`包中的一个线程安全的队列,它基于链表结构实现,具备先进先出(FIFO)的...

    LinkedBlockingQueue 和 ConcurrentLinkedQueue的区别.docx

    《LinkedBlockingQueue与ConcurrentLinkedQueue的比较与应用》 在Java并发编程中,队列是一种重要的数据结构,尤其在多线程环境下的任务调度和数据传递中扮演着关键角色。LinkedBlockingQueue和...

    LinkedBlockingQueue + 单向链表基本结构

    《深入理解LinkedBlockingQueue与单向链表结构》 LinkedBlockingQueue是Java并发包`java.util.concurrent`中的一个先进先出(FIFO)队列,它基于链表结构实现,特别适用于高并发场景。该队列的主要特点是其内部数据...

    并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法

    ### 并发队列 ConcurrentLinkedQueue 和阻塞队列 LinkedBlockingQueue 用法详解 #### 一、并发队列 ConcurrentLinkedQueue 概述 `ConcurrentLinkedQueue` 是 Java 并发包 `java.util.concurrent` 提供的一个高性能...

    LinkedBlockingQueuejava.pdf

    《LinkedBlockingQueue in Java》 Java中的`LinkedBlockingQueue`是`java.util.concurrent`包下的一种线程安全的阻塞队列,它是基于链表结构实现的,具有很好的性能表现。这种队列在多线程环境下的并发操作中被广泛...

    并发容器之ArrayBlockingQueue和LinkedBlockingQueue实现原理详解

    "并发容器之ArrayBlockingQueue和LinkedBlockingQueue实现原理详解" ArrayBlockingQueue和LinkedBlockingQueue是Java并发容器中两个常用的阻塞队列实现,分别基于数组和链表存储元素。它们都继承自AbstractQueue类...

    JDK容器学习之Queue:LinkedBlockingQueue

    本篇文章将深入探讨`LinkedBlockingQueue`,这是一个基于链表结构的无界阻塞队列,常用于线程池的创建中作为任务缓冲队列。 首先,我们来看一下`LinkedBlockingQueue`的底层数据结构。与数组结构的`...

    元素唯一的LinkedBlockingQueue阻塞队列

    《元素唯一的LinkedBlockingQueue阻塞队列》 在Java并发编程中,`LinkedBlockingQueue`是一种基于链表结构的阻塞队列,它在多线程环境下的性能表现优秀,常用于实现生产者消费者模型。这个队列的一个关键特性是其...

    生产者/消费者模式 阻塞队列 LinkedBlockingQueue

    在Java中,阻塞队列(BlockingQueue)是一个很好的实现生产者/消费者模式的工具,而LinkedBlockingQueue则是Java并发包(java.util.concurrent)中提供的一个具体实现。 LinkedBlockingQueue是一个基于链表结构的...

    详细分析Java并发集合LinkedBlockingQueue的用法

    详细分析Java并发集合LinkedBlockingQueue的用法 Java并发集合LinkedBlockingQueue是Java并发集合中的一种阻塞队列实现,使用链表方式实现的阻塞队列。LinkedBlockingQueue的实现主要包括链表实现、插入和删除节点...

    java中LinkedBlockingQueue与ArrayBlockingQueue的异同

    Java中的`LinkedBlockingQueue`和`ArrayBlockingQueue`都是`java.util.concurrent`包下的线程安全队列,它们都实现了`BlockingQueue`接口,提供了一种高效、线程安全的数据同步方式。这两种队列在很多方面都有相似之...

    java线程池概念.txt

     ArrayBlockingQueue和PriorityBlockingQueue使用较少,一般使用LinkedBlockingQueue和Synchronous。线程池的排队策略与BlockingQueue有关。 threadFactory:线程工厂,主要用来创建线程:默认值 ...

    blockingQueues:简单,高性能,goroutine安全队列,可用作资源池或作业队列

    LinkedBlockingQueue :由容器/列表支持的有界阻塞队列 ConcurrentRingBuffer :由片支持的有界无锁队列 安装 go get - u github . com / theodesp / blockingQueues 用法 非阻塞API queue , _ := NewArrayBlock

    spring-blockingqueue:用Spring Boot阻止队列

    通常,我们会选择实现BlockingQueue的类,如ArrayBlockingQueue、LinkedBlockingQueue或PriorityBlockingQueue,根据实际需求选择合适的实现。 例如,我们可以创建一个配置类,如下所示: ```java @Configuration ...

    喜提JDK的BUG一枚!多线程的情况下请谨慎使用这个类的stream遍历。.doc

    《Java多线程环境下慎用`LinkedBlockingQueue`的`stream`遍历——揭秘JDK BUG》 在Java编程中,线程安全是多线程编程的重要考量因素,而`LinkedBlockingQueue`作为Java并发包中的一个线程安全队列,因其高效的性能...

    队列写入mysql实例

    本实例将探讨如何利用`LinkedBlockingQueue`和Redis队列来实现数据写入MySQL的过程,这对于大型系统中的批量数据处理和并发控制具有重要意义。 首先,`LinkedBlockingQueue`是Java并发库`java.util.concurrent`中的...

    操作系统的线程同步实验报告完整版

    在本次实验中,我们深入探讨了多种线程同步的方法,包括synchronized关键字、volatile、ReentrantLock类以及阻塞队列LinkedBlockingQueue。 首先,synchronized关键字是Java中用于实现线程同步的基本手段,它可以...

    java多线程模拟队列实现排队叫号

    private final LinkedBlockingQueue&lt;ClientThread&gt; queue = new LinkedBlockingQueue(); public void enqueue(ClientThread client) { try { queue.put(client); } catch (InterruptedException e) { Thread....

Global site tag (gtag.js) - Google Analytics