java-Queue的add/offer/put,remove/poll/take,element/peek异同

记录一下java中,Queue的add/offer/put,remove/poll/take,element/peek方法的差异。
1. add/offer/put的区别

add会在队列尾部增加一个元素,但是如果队列已满,会抛出unchecked 异常;offer在向一个已满的队列中添加新元素时,会返回false,不会抛异常;put方法只存在于****BlockingQueue类型的阻塞队列中,使用put方法向已满的队列添加新元素时,代码会阻塞在put处,如:

public static void main(String args[]){  
        try {  
            LinkedBlockingQueue<String> queue=new LinkedBlockingQueue(2);  
            queue.put("This");  
            queue.put("is");  
            queue.put("me");  
            // 代码会阻塞在queue.put("me");  ,下边的print不会输出
            System.out.println("me");  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  

2. remove/poll/take的区别

remove是从队列头部【移除】一个元素,take和poll都是从队列头部【拿出】一个元素,就是从头部得到并移除该元素。remove在移除空队列的头部元素时,remove会抛出NoSuchElementException异常;poll空队列的头部元素时返回null,不抛异常;而take与上面的put方法对应,只存在阻塞队列中,且获得空队列的头部元素时,会阻塞在获取的位置;

3. element/peek的区别

首先两者都是用于查询队列的头部元素,但不移除。区别在于,队列为空为,peek方法与poll方法一样,返回null,而element方法与remove方法相同,抛出异常。

从上面的区别可知:

1. put/take方法在****BlockingQueue类型的阻塞队列中使用,可用于多线程对同一数据的同步处理过程中,如数据流的写入与读取等;

2. add/remove/element属于同组方法,对异常操作会抛出异常处理

3. offer/poll/peek属于同组方法,对于异常操作不会跑出异常,只会返回false。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值