SynchronousQueue 这个队列实现了 BlockingQueue接口
该队列的特点
1.容量为0,无论何时 size方法总是返回0
2. put操作阻塞,直到另外一个线程取走队列的元素。
3.take操作阻塞,直到另外的线程put某个元素到队列中。
4. 任何线程只能取得其他线程put进去的元素,而不会取到自己put进去的元素
public static void main(String[] args) throws InterruptedException {
final SynchronousQueue<Integer> queue = new SynchronousQueue<Integer>();
new Thread() {
@Override
public void run() {
try {
while (true) {
System.out.println("size1:" + queue.size());
System.out.println("element:" + queue.take());
System.out.println("size2:" + queue.size());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
queue.put(1);
queue.put(2);
queue.put(3);
}
该队列的一个应用在 ThreadPoolExecutor
本文深入探讨了SynchronousQueue作为BlockingQueue接口实现的特点,重点阐述了其容量为0、put和take操作的阻塞特性,以及任何线程只能获取其他线程放入队列的元素。通过示例代码演示了如何在ThreadPoolExecutor中利用SynchronousQueue进行高效任务调度。

被折叠的 条评论
为什么被折叠?



