资讯专栏INFORMATION COLUMN

Queue总结

ispring / 2733人阅读

ArrayBlockingQueue
public void put(E e) throws InterruptedException {
    checkNotNull(e);
    final ReentrantLock lock = this.lock;
    lock.lockInterruptibly(); // 锁
    try {
        while (count == items.length)
            notFull.await(); // 阻塞
        enqueue(e);
    } finally {
        lock.unlock();
    }
}

public E take() throws InterruptedException {
    final ReentrantLock lock = this.lock;
    lock.lockInterruptibly(); // 锁
    try {
        while (count == 0)
            notEmpty.await(); // 阻塞
        return dequeue();
    } finally {
        lock.unlock();
    }
}
LinkedBlockingQueue

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67052.html

相关文章

  • Java知识点总结(Java容器-Queue

    摘要:知识点总结容器知识点总结容器接口与是在同一级别,都是继承了接口。另一种队列则是双端队列,支持在头尾两端插入和移除元素,主要包括。一个由链表结构组成的无界阻塞队列。是一个阻塞的线程安全的队列,底层实现也是使用链式结构。 Java知识点总结(Java容器-Queue) @(Java知识点总结)[Java, Java容器] Queue Queue接口与List、Set是在同一级别,都是继承了...

    hedzr 评论0 收藏0
  • js 事件循环中的job queue和message queue

    摘要:等到主任务队列执行完成时此时已打印,执行存在队列中的函数,任务队列中引入了任务队列来执行的回调函数。在这个的回调函数中使用创建一个的任务,同时在中调用函数创建一个任务。 本文讨论的事件循环均是基于浏览器环境上的,类似nodejs环境下的事件循环与此并不相同。 读者首先要对js单线程事件循环机制以及Promise有基本理解;如果这两个概念不是很清楚,建议先阅读下面两篇文章: THE JA...

    songze 评论0 收藏0
  • RabbitMQ 总结

    摘要:消息确认为,会等待的显式确认。在消息发送到之后会立刻路由到中,因此未持久化的在重启后会丢失元数据以及绑定,对和消息的持久化无影响。指定如果一个或者有多个的情况下,只有最大的那个才会生效。要求集群中至少要有一个磁盘节点,储存了所有的元数据。 Connection & Channel Connection 代表一个 TCP 连接,Channel 是建立在 Connection 上的虚拟连接...

    Mr_houzi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<