同步队列SynchronousQueue
没有容量,进去一个元素,必须等待取出来之后,才能往里放一个元素!
/*
* 同步队列
* SynchronousQueue 和其他的BlockingQueue 不一样,
* SynchronousQueue不存储元素
*/
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 2");
queue.put("2");
System.out.println(Thread.currentThread().getName()+ "put 3");
queue.put("3");
} catch (InterruptedException e) {
e.printStackTrace();
}
},"T1").start();
new Thread(()->{
try {
TimeUnit.SECONDS.sleep(3);
System.out.println(Thread.currentThread().getName()+ queue.take());
TimeUnit.SECONDS.sleep(3);
System.out.println(Thread.currentThread().getName()+ queue.take());
TimeUnit.SECONDS.sleep(3);
System.out.println(Thread.currentThread().getName()+ queue.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
},"T2").start();
}
}