队列学习小结

今天复习了队列,做个小结,方便自己回顾,有不足的还请路过的大侠多多指教,纯属个人学习,谢谢;

1、PriorityBlockingQueue优先级阻塞队列,每次都是最小的id在最前面,如下所示:

[0, 2, 1, 5, 4]   ---原队列
0                     ---被take()1个侯
[1, 2, 4, 5]
1                     ---被take()2个侯
[2, 5, 4]
2                     ---被take()3个侯
[4, 5]

 

2、ConcurrentLinkedQueue多个线程无界线程安全队列,遵循先进先出,不允许null元素;

ConcurrentLinkedQueue<String> strQ=new ConcurrentLinkedQueue<String>();

 

3、ArrayBlockingQueue阻塞式队列

add()已经满了时抛出一个异常。不会阻塞。

offer()已经满了时,返回false。不会阻塞。

put()已经满了时,会进入等待,只要不被中断,就会插入数据到队列中。会阻塞,可以响应中断。

remove()假如对列为空,则抛出异常。

poll()假如对列为空,返回false。不会阻塞。

take()假如对列为空,会进入等待,会阻塞,可以响应中断。

peek()假如对列为空,返回NULL,不会删除队列中的元素

 

4、LinkedBlockingQueue阻塞的线程安全的队列,默认大小Integer.MAX_VALUE,不允许null

      add()方法在添加元素的时候,若超出了度列的长度会直接抛出异常.

      put()方法,若向队尾添加元素的时候发现队列已经满了会发生阻塞一直等待空间,以加入元素.

      offer()方法在添加元素时,如果发现队列已满无法添加的话,会直接返回false.

       poll() 若队列为空,返回null。

       remove()若队列为空,抛出NoSuchElementException异常。

       take()若队列为空,发生阻塞,等待有元素。

       peek()若队列为空,返回null,获取元素不会删除队列元素

5、SynchronousQueue

    直接add()数据会报一场IllegalStateException: Queue full

    直接offer()也无法添加如数据

   必须take()数据的同时等待加入数据,该队列不保留数据;

6、LinkedBlockingDeque双向并发阻塞队列

两边入两边出提供方法addfist(),offerlast(),pollfist(),peeklast().....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值