- SynchronousQueue是这样一种阻塞队列,其中每个 put 必须等待一个 take,反之亦然。同步队列没有任何内部容量,甚至连一个队列的容量都没有。一种没有缓冲的队列,生产者生产数据直接或被消费者获取并消费。
- public class UseQueue {
- public static void main(String[] args) throws Exception {
- final SynchronousQueue<String> q = new SynchronousQueue<String>();
- q.add("asdasd");
- }
- }
- 输出结果:
- Exception in thread "main" java.lang.IllegalStateException: Queue full
- at java.util.AbstractQueue.add(AbstractQueue.java:98)
- at com.bjsxt.base.coll013.UseQueue.main(UseQueue.java:19)
- public class UseQueue {
- public static void main(String[] args) throws Exception {
- final SynchronousQueue<String> q = new SynchronousQueue<String>();
- Thread t1 = new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- System.out.println(q.take());
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- });
- t1.start();
- Thread t2 = new Thread(new Runnable() {
- @Override
- public void run() {
- q.add("asdasd");
- }
- });
- t2.start();
- }
- }
- }
- 输出结果:
- asdasd
15.SynchronousQueue
最新推荐文章于 2022-02-03 18:43:03 发布