美文网首页
Java-阻塞队列

Java-阻塞队列

作者: zzq_nene | 来源:发表于2020-07-17 17:34 被阅读0次

    队列有长度限制,当队列中满了,往队列中放元素的动作会被阻塞,当队列是空的时候,往队列中拿元素,这个拿的动作会被阻塞。
    在Java中,阻塞队列都是实现了BlockingQueue接口。
    在BlockingQueue中,入队和出队的几个方法,这些方法都是成对出现的:
    add()和remove():这两个方法是非阻塞的,当队列满的时候,add会抛出异常,当队列空的时候,remove会抛出异常。
    offer()和poll():使用offer往满的队列里放元素,会返回false;poll方法从空的队列里拿元素,会返回null。
    put()和take():这是阻塞的方法。使用put往满的队列里放元素,会被阻塞;使用take往空的队列里拿元素,会被阻塞。

    常见的阻塞队列:

    ArrayBlockingQueue:一个由数组结构组成的有界阻塞队列。
    LinkedBlockingQueue:一个由链表结构组成的有界阻塞队列。
    PriorityBlockingQueue:一个支持优先级排序的无界阻塞队列。
    DelayQueue:一个使用优先级队列实现的无界阻塞队列。
    SynchronousQueue:一个不存储元素的阻塞队列。
    LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。
    LinkedBlockingDeque:一个由链表结构组成的双向阻塞队列。
    无界队列,在插入的时候并不会阻塞,但是在拿取的时候会阻塞。而有界队列,在插入和拿取的时候都会阻塞。

    纯笔记

    相关文章

      网友评论

          本文标题:Java-阻塞队列

          本文链接:https://www.haomeiwen.com/subject/vkqnhktx.html