版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zl_momomo/article/details/82462053
SynchronousQueue
SynchronousQueue是一个阻塞队列,其中每个一元素的插入操作必须等待另一个线程进行移除操作
public class SynchronousQueueTest {
public static void main(String[] args) {
//SynchronousQueue 一个阻塞队列,其中每个插入操作必须等待另一个线程执行相应的移除操作
SynchronousQueue<Integer> queue = new SynchronousQueue<>();
Thread t = new Thread(()->{
System.out.println("prepare to take...");
try {
System.out.println("i take an element " + queue.take());
} catch (Exception e) {
e.printStackTrace();
}
});
Thread t2 = new Thread(()->{
System.out.println("prepare to put...");
try {
queue.put(1);
System.out.println("has been put...");
} catch (Exception e) {
e.printStackTrace();
}
});
t2.start();
t.start();
}
}
prepare to put...
prepare to take...
has been put...
i take an element 1
如果把线程一中 queue.take() 操作移除,线程二的queue.put(1)无法执行
执行结果如
prepare to take...
prepare to put...(线程二总在执行...)