JUC

1.消息队列

四组API

方式抛出异常不会抛出异常,有返回值阻塞等待超时等待
添加操作add()offer() 供应put()offer(obj,int,timeunit.status)
移除操作remove()poll() 获得take()poll(int,timeunit.status)
判断队列首部element()peek() 偷看,偷窥 
    public static void main(String[] args) throws InterruptedException {
        ArrayBlockingQueue queue = new ArrayBlockingQueue<>(2);
//        System.out.println(queue.add("a"));
//        System.out.println(queue.add("g"));
//        System.out.println("=============================");
//        System.out.println(queue.remove());
//        System.out.println(queue.remove());

//        System.out.println(queue.offer("a"));
//        System.out.println(queue.offer("b"));
//        System.out.println("取出队列第一个元素"+queue.peek());
//        // System.out.println(queue.offer("a"));
//        System.out.println(queue.poll());
//        System.out.println(queue.poll());


//        queue.put("a");
//        queue.put("b");
//        //queue.put("c"); //队列没有位置就会阻塞
//        System.out.println(queue.take());
//        queue.put("c");
//        System.out.println(queue.take());


        System.out.println(queue.offer("a"));
        System.out.println(queue.offer("b"));
        System.out.println(queue.offer("d",2, TimeUnit.SECONDS));
        System.out.println("取出队列第一个元素"+queue.peek());
        // System.out.println(queue.offer("a"));
        System.out.println(queue.poll());
        System.out.println(queue.poll());
        System.out.println(queue.poll(3,TimeUnit.SECONDS));

    }

2.SynchronizedQueue 同步队列

进去一个元素,必须等待取出来之后,才能再往里面放一个元素

 public static void main(String[] args) {
        SynchronousQueue<Object> queue = new SynchronousQueue<>();
        new Thread(()->{
            try {
                System.out.println(Thread.currentThread().getName()+ "put aaaaaaa");
                queue.put("AAAAAAAA");
                System.out.println(Thread.currentThread().getName()+ "put bbbbbbbbb");
                queue.put("BBBBBBBB");
                System.out.println(Thread.currentThread().getName()+ "put cccccccccc");
                queue.put("CCCCCCCCC");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        },"T1").start();
        new Thread(()->{
            try {
                TimeUnit.SECONDS.sleep(3);
                System.out.println(Thread.currentThread().getName() + "=>" + queue.take());
                TimeUnit.SECONDS.sleep(3);
                System.out.println(Thread.currentThread().getName()+ "=>" + queue.take());
                TimeUnit.SECONDS.sleep(3);
                System.out.println(Thread.currentThread().getName()+ "=>" + queue.take());

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        },"T2").start();
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值