BlockingQUery接口是Query的子接口,是作为线程同步的工具。
BlockingQuery具有一个特征,当生产者线程试图向BlockingQuery中放入元素时,如果队列已满,则该线程被阻塞;当消费者从BlockingQuery中去除元素时,如果队列已空,则该线程阻塞。
程序的两个线程通过交替向BlockingQuery存入元素,取出元素,可很好的控制线程的通信。
BlockingQuery提供了两个支持阻塞的方法:
put(E e):尝试把E元素放入BlockingQuery中,如果该队列已满,则阻塞该线程。
take(E e):尝试从BlockingQuery的头部取出元素,如果该队列已空,则阻塞该线程。
BlockingQuery包含的方法:
BlockingQuery的实现类:
ArrayBlockingQuery:基于数组实现的BlockingQuery队列
LinkedBlockingQuery:基于链表实现的BlockingQuery队列
案例 :使用BlockingQuery实现多线程的通信
package com.test1.b