JUC并发编程SynchronousQueue(十一)

SynchronousQueue 同步队列

 没有容量

进去一个元素,必须等待取出来,才能往里面放一个元素!

put take

package com.xizi.SynchronousQueue;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;

public class SynchronousQueueDemo {
    public static void main(String[] args) {
       BlockingQueue<String> blockingQueue = new SynchronousQueue<>();
       new Thread(()->{
           try {
               System.out.println(Thread.currentThread().getName()+"put 1");
               blockingQueue.put("1");
               System.out.println(Thread.currentThread().getName()+"put 2");
               blockingQueue.put("2");
               System.out.println(Thread.currentThread().getName()+"put 3");
               blockingQueue.put("3");
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
       },"T1").start();

       new Thread(()->{
           try {
               TimeUnit.SECONDS.sleep(3);
               System.out.println(Thread.currentThread().getName()+"="+blockingQueue.take());
               TimeUnit.SECONDS.sleep(3);
               System.out.println(Thread.currentThread().getName()+"="+blockingQueue.take());
               TimeUnit.SECONDS.sleep(3);
               System.out.println(Thread.currentThread().getName()+"="+blockingQueue.take());
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
       }
       ,"T2").start();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_45480785/article/details/105365485