没有容量,进去put()一个元素,必须等待取take()出来之后,才能在往里面放。
package com.pa.test.JUC.queue;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;
/**
* 同步列队
*/
public class SynchronousQueueTest {
public static void main(String[] args) {
SynchronousQueue<String> queue = new SynchronousQueue<>();
new Thread(()->{
try {
System.out.println(Thread.currentThread().getName()+"put 1");
queue.put("1");
System.out.println(Thread.currentThread().getName()+"put 1");
queue.put("2");
System.out.println(Thread.currentThread().getName()+"put 1");
queue.put("3");
} catch (InterruptedException e) {
e.printStackTrace();
}
},"T线程").start();
new Thread(()->{
try {
TimeUnit.SECONDS.sleep(2);
System.out.println(Thread.currentThread().getName()+"= >"+queue.take());
TimeUnit.SECONDS.sleep(2);
System.out.println(Thread.currentThread().getName()+"= >"+queue.take());
TimeUnit.SECONDS.sleep(2);
System.out.println(Thread.currentThread().getName()+"= >"+queue.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
},"L线程").start();
}
}