阻塞队列

阻塞队列是一种常用的并发编程工具,它提供四种API:抛出异常、仅有返回值、一直阻塞等待和超时等待。同步队列是一个没有固定容量的特殊队列,一个线程存入元素后必须等待其他线程取出,以此实现线程间的同步。这种队列在多线程环境中常用于实现高效的线程间通信和任务调度。
摘要由CSDN通过智能技术生成

阻塞队列

BlockingQueue

我们常用其实现类:ArrayBlockingQueue LinkedBlockingQueue

BlockingQueue<String> blockingQueue = new ArrayBlockingQueue<String>(3);//参数:队列大小

有四种API(四组对应重载方法):

操作/方法 抛出异常 不抛出异常,有返回值 一直阻塞,等待 超时等待
添加 add("") offer("") put("") offer(值,时间, 时间单位)
移除 remove() poll() take() poll(时间, 时间单位)
查看队列首 element() peek() ---------- ----------

抛出异常

public class Test01 {
   

    public static void main(String[] args) {
   
        test1();
    }

    /**
     * 抛出异常
     */
    public static void test1(){
   
        BlockingQueue<String> blockingQueue = new ArrayBlockingQueue<String>(3);//参数:队列大小
        //添加  返回值 是否插入成功 true==成功
        System.out.println(blockingQueue.add("-1"));
        System.out.println(blockingQueue.add("-2"));
        System.out.println(blockingQueue.add("-3"));
        //现在 添加第四个 超出了队列大小 异常Exception in thread "main" java.lang.IllegalStateException: Queue full
        //System.out.println(blockingQueue.add("-4"));
        
        //查看队首
        System.out.println(blockingQueue.element());

        //移除-取出  移除方式 先进先出 即 -1 > -2 > -3  返回值 被移除的对象
        System.out.println(blockingQueue.remove());
        System.out.println(blockingQueue.remove());
        System.out.println(blockingQueue.remove());
        //现在 取出一个不存在的 异常Exception in thread "main" java.util.NoSuchElementException
        //System.out.println(blockingQueue.remove());
    }

}
//正常运行
true
true
true
  -1
-1
-2
-3

仅有返回值

public class Test01 {
   

    public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值