/**
* @ClassName SynchronousQueueDemo
* @Description 阻塞队列SynchronousQueue演示
*
* 不存储元素的阻塞队列,即单个元素的队列,只有一个元素被take了才能put另一个元素
**/
public class SynchronousQueueDemo {
public static void main(String[] args) {
BlockingQueue<String> blockingQueue = new SynchronousQueue<>();
new Thread(()->{
try {
System.out.println(Thread.currentThread().getName() +"\t put 1");
blockingQueue.put("1");
System.out.println(Thread.currentThread().getName() +"\t put 2");
blockingQueue.put("2");
System.out.println(Thread.currentThread().getName() +"\t put 3");
blockingQueue.put("3");
} catch (InterruptedException e) {
e.printStackTrace();
}
},"AAA").start();
new Thread(()->{
try {
TimeUnit.SECONDS.sleep(1);
System.out.println(Thread.currentThread().getName() +"\t take 1");
blockingQueue.take();
TimeUnit.SECONDS.sleep(1);
System.out.println(Thread.currentThread().getName() +"\t take 2");
blockingQueue.take();
TimeUnit.SECONDS.sleep(1);
System.out.println(Thread.currentThread().getName() +"\t take 3");
blockingQueue.take();
} catch (InterruptedException e) {
e.printStackTrace();
}
},"BBB").start();
}
}
阻塞队列SynchronousQueue案例演示
最新推荐文章于 2024-05-14 15:45:28 发布