概述
无容量的同步队列,即入队线程通过SynchronousQueue将节点传递给出队线程,若暂时无出队线程接收,则一直等待;反之亦然。
数据结构
构造器
// 无参构造
public SynchronousQueue() {
this(false);
}
// 带fair构造
public SynchronousQueue(boolean fair) {
transferer = fair ? new TransferQueue() : new TransferStack();
}
增删
public void put(E o) throws InterruptedException {
if (o == null) throw new NullPointerException();
if (transferer.transfer(o, false, 0) == null) {
Thread.interrupted();
throw new InterruptedException();
}
}
public E take() throws InterruptedException {
Object e = transferer.transfer(null, false, 0);
if (e != null)
return (E)e;
Thread.interrupted();
throw new InterruptedException();
}
特性
同步队列