美文网首页
java基础-Queue

java基础-Queue

作者: 小庄bb | 来源:发表于2017-08-06 14:50 被阅读25次

    Queue队列

    其接口定义为:

    public interface Queue<E> extends Collection<E> {
        //获取但不移除队列头,
        E element();
        //添加元素到队尾
        boolean offer(E o);
        //获取但不移除队列头的元素 
        E peek();
        //移除对头元素
        E poll();
        //移除对头元素
        E remove();
    }
    
    • Queue的主要特征为FIFO(先进先出)一般不允许插入null,除了LinkedList是个例外,其允许插入null。
    • 当Queue的元素已经到达限制数目时,add会抛出 IllegalStateException异常,offer会返回false。
    • 当Queue为空时,remove抛出NoSuchElementException异常,而poll返回null。
    • element和peek返回但不删除Queue中的头元素,它们的区别类似remove与poll。

    BlockingQueue和CountDownlatch

    • BlockingQueue接口定义了一种阻塞的FIFO queue,每一个BlockingQueue都有一个容量:

    当容量为满时往BlockingQueue里添加元素时会阻塞。
    当容量为空时从BlockingQueue里取出元素时会阻塞。

    其两个常用子类是ArrayBlockingQueue和LinkedBlockingQueue。

    • CountDownlatch 是一个同步辅助类,当一个线程对Queue操作完成之前,其他要对Queue操作的线程进入阻塞。排队等待。主要方法有:
    public CountDownLatch(count); 
    public void countDown(); 
    public void await() ;
    

    构造方法设置了计数的次数,countDown方法,当前的计数减一,await方法,调用该方法会一直阻塞当前线程,直至计数为0 ;

    相关文章

      网友评论

          本文标题:java基础-Queue

          本文链接:https://www.haomeiwen.com/subject/trwglxtx.html