阻塞与不阻塞队列、各种队列区别、阻塞队列常用方法

本文介绍了阻塞队列BlockingQueue的使用,包括常用操作方法如offer()、put()、take()等。同时,对比了几种不同类型的队列,如LinkedList、PriorityQueue和ConcurrentLinkedQueue等。重点讲解了实现阻塞接口的ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue、DelayQueue和SynchronousQueue的特点。最后,讨论了阻塞与非阻塞队列的区别,强调了阻塞队列在并发操作中的线程同步和超时特性。
摘要由CSDN通过智能技术生成

阻塞队列的使用

BlockingQueue 队列常用的操作方法:

  1.往队列中添加元素: add(), put(), offer()

  2.从队列中取出或者删除元素: remove() element()  peek()   poll()  take()

每个方法的说明如下:

  offer()方法往队列添加元素如果队列已满直接返回false,队列未满则直接插入并返回true;

  add()方法是对offer()方法的简单封装.如果队列已满,抛出异常new IllegalStateException("Queue full");

   put()方法往队列里插入元素,如果队列已经满,则会一直等待直到队列为空插入新元素,或者线程被中断抛出异常.

   remove()方法直接删除队头的元素:

   peek()方法直接取出队头的元素,并不删除.

   element()方法对peek方法进行简单封装,如果队头元素存在则取出并不删除,如果不存在抛出异常NoSuchElementException()

   poll()方法取出并删除队头的元素,当队列为空,返回null;

   take()方法取出并删除队头的元素,当队列为空,则会一直等待直到队列有新元素可以取出,或者线程被中断抛出异常

offer()方法一般跟pool()方法相对应, put()方法一般跟take()方法相对应.日常开发过程中offer()与pool()方法用的相对比较频繁.

几种队列的区别

没有实现阻塞接口
LinkList
实现java.util.Queue的LinkList,

PriorityQueue
实现java.util.AbstractQueue接口内置的不阻塞队列

ConcurrentLinkedQueue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值