同步隊列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     }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM