java基础-Queue

Queue队列

其接口定义为:

public interface Queue extends Collection {
    //获取但不移除队列头,
    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)