码迷,mamicode.com
首页 > 其他好文 > 详细

ArrayBlockingQueue

时间:2019-12-15 12:50:11      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:lock   system   locking   put   ted   超过   lse   new   out   

/**
 *  add    超过capacity会抛出异常     remove  队列为空会抛出异常      add和remove底层也是调用的offer和poll方法
 *
 *  offer  超过capacity会返回false    poll   队列为空会返回null
 *
 *  put    超过capacity会阻塞         take 队列为空会阻塞
 *
 */
public class ArrayBlockingQueueTest {

    static ArrayBlockingQueue<String> queue = new ArrayBlockingQueue(2);

    public static void main(String[] args) throws InterruptedException {
//        testAdd();
//        testRemove();

//        testOffer();
//        testPoll();

//        testPut();
//        testTake();

    }


    /**
     * 超过capacity会抛出异常
     */
    public static void testAdd() {
        queue.add("hello1");
        queue.add("hello2");
        queue.add("hello3");
    }

    /**
     * 队列为空抛出异常
     */
    public static void testRemove() {
        queue.remove();

    }

    /**
     * 超过capacity会返回false
     */
    public static void testOffer() {
        queue.offer("hello1");
        queue.offer("hello2");
        System.out.println(queue.offer("hello3"));
    }

    /**
     * 队列为空返回null
     */
    public static void testPoll() {
        System.out.println(queue.poll());
    }

    /**
     * 超过capacity会阻塞
     */
    public static void testPut() throws InterruptedException {
        queue.put("hello1");
        queue.put("hello2");
        queue.put("hello3");
    }


    /**
     * 队列为空会阻塞
     */
    public static void testTake() throws InterruptedException {
        queue.take();

    }

}

ArrayBlockingQueue

标签:lock   system   locking   put   ted   超过   lse   new   out   

原文地址:https://www.cnblogs.com/moris5013/p/12043687.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!