Loading

同步队列SynchronousQueue

* 同步队列
* 和其他的BlockingQueue 不一样 SynchronousQueue 不存储元素
* put了一个元素,必须从里面先take取出来,否则不能再put进去值
 1   public static void main(String[] args) {
 2         BlockingQueue<String> blockingQueue = new SynchronousQueue<>();
 3 
 4         new Thread(()->{
 5             try {
 6                 System.out.println(Thread.currentThread().getName()+"put 1");
 7                 blockingQueue.put("1");
 8                 System.out.println(Thread.currentThread().getName()+"put 2");
 9                 blockingQueue.put("2");
10                 System.out.println(Thread.currentThread().getName()+"put 3");
11                 blockingQueue.put("3");
12             } catch (InterruptedException e) {
13                 e.printStackTrace();
14             }
15         },"T1").start();
16         new Thread(()->{
17             try {
18                 TimeUnit.SECONDS.sleep(3);//等待3秒
19                 System.out.println(Thread.currentThread().getName()+"=>"+blockingQueue.take());
20                 TimeUnit.SECONDS.sleep(3);//等待3秒
21                 System.out.println(Thread.currentThread().getName()+"=>"+blockingQueue.take());
22                 TimeUnit.SECONDS.sleep(3);//等待3秒
23                 System.out.println(Thread.currentThread().getName()+"=>"+blockingQueue.take());
24 
25             } catch (InterruptedException e) {
26                 e.printStackTrace();
27             }
28         },"T2").start();
29 
30     }

 

 

posted @ 2020-04-14 16:42  Rzk  阅读(1552)  评论(0编辑  收藏  举报