JUC concurrent programming SynchronousQueue (11)

SynchronousQueue SynchronousQueue

 No capacity

Enter an element, and you must wait for it to be taken out before you can put an element in it!

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();
    }
}

 

Guess you like

Origin blog.csdn.net/weixin_45480785/article/details/105365485