美文网首页
BlockingQueue接口方法说明

BlockingQueue接口方法说明

作者: senninha | 来源:发表于2017-07-25 11:40 被阅读33次

    BolckingQueue接口

    BlockingQueue 是juc下所有队列的接口,这些队列包括:

    • ArrayBolckingQueue
    • DelayedWorkQueue
    • DelayQueue
    • FariBlockQueue
    • LinkedBlockingQueue
    • PriorityBolckingQueue
    • SychronousQueue

    先来熟悉一下相关的接口方法标准

    • boolean add(E e)
      从函数说明可以看出,这个方法是立即返回操作结果的,如果是在有界队列,队列满的时候,是直接抛出IllegalStateException异常的,所以建议在有界队列的时候,使用offer()

    • boolean offer(E e) 方法说明又强调了一次,如果是有界队列,这个比add方法好。。我知道了。。如果没有空间了,会一直阻塞,直到抛出异常

    • 还有另外一个offer方法
      boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException;
      这个offer方法是可设置等待时间,并且是可中断的,成功入队返回true,超时失败false

    • put(E e) 队列满的时候一直等待直到中断异常

    • E take() 方法,返回检索获取到队列头的元素并且移除他,如果没有可获取的元素,还是一直傻等,直到抛出中断异常

    • E poll(long timeout, TimeUnit unit)方法,等待一个指定的时间段,如果在等待过程中中断了,抛出中断异常,如果等待时间还没有获取到,返回null

    总结如下:

    put(E e)和take()一个是入队一个出对,是会一直傻等直到抛出中断异常的
    offer(E e, Long timeout, TimeUnit unit)和poll(long timeout, TimeUnit unit)是在一个时间段内等,不会一直傻等的

    相关文章

      网友评论

          本文标题:BlockingQueue接口方法说明

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