摘要:直接上代碼注意在使用實現生產者消費者模型時候,泛型使用若等對象時候會發現消費者出現異常,這是由于傳值和傳引用的區別,而由于的自動裝箱不會出現此類問題,具體可自行嘗試生產者消費者獲取失敗主線程
直接上代碼
注意在使用blockingqueue實現生產者消費者模型時候,BlockingQueue泛型使用若atomic等對象時候會發現消費者出現異常,這是由于傳值和傳引用的區別,而Integer由于java的自動裝箱不會出現此類問題,具體可自行嘗試
生產者
public class Pull implements Runnable { BlockingQueuepool; Integer product = 0; public Pull(BlockingQueue pool) { this.pool = pool; } @Override public void run() { while (true) { try { pool.put(product); System.out.println("add:" + product); product++; } catch (InterruptedException e) { System.out.println("add failed"); e.printStackTrace(); } if (product == 20){ break; } } } }
消費者
public class Push implements Runnable{ BlockingQueuepool; public Push(BlockingQueue pool) { this.pool = pool; } @Override public void run() { while(true) { try { Integer tmp = pool.take(); System.out.println("take:" + tmp); } catch (InterruptedException e) { System.out.println("獲取失敗"); e.printStackTrace(); } } } }
主線程
public class MyExecutor { public static void main(String[] args) { BlockingQueuequeue = new LinkedBlockingDeque<>(10); Thread thread = new Thread(new Push(queue)); Thread thread1 = new Thread(new Pull(queue)); thread1.start(); thread.start(); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68276.html
摘要:和方法會一直阻塞調用線程,直到線程被中斷或隊列狀態可用和方法會限時阻塞調用線程,直到超時或線程被中斷或隊列狀態可用。 showImg(https://segmentfault.com/img/bVbgyPy?w=1191&h=670); 本文首發于一世流云專欄:https://segmentfault.com/blog... 一、引言 從本節開始,我們將介紹juc-collectio...
摘要:如果隊列已滿,這個時候寫操作的線程進入到寫線程隊列排隊,等待讀線程將隊列元素移除騰出空間,然后喚醒寫線程隊列的第一個等待線程。數據必須從某個寫線程交給某個讀線程,而不是寫到某個隊列中等待被消費。 前言 本文直接參考 Doug Lea 寫的 Java doc 和注釋,這也是我們在學習 java 并發包時最好的材料了。希望大家能有所思、有所悟,學習 Doug Lea 的代碼風格,并將其優雅...
摘要:前言這篇主要來講解多線程中一個非常經典的設計模式包括它的基礎到拓展希望大家能夠有所收獲生產者消費者模式簡述此設計模式中主要分兩類線程生產者線程和消費者線程生產者提供數據和任務消費者處理數據和任務該模式的核心就是數據和任務的交互點共享內存緩 前言 這篇主要來講解多線程中一個非常經典的設計模式包括它的基礎到拓展希望大家能夠有所收獲 生產者-消費者模式簡述 此設計模式中主要分兩類線程:生產者...
摘要:引言在包中,很好的解決了在多線程中,如何高效安全傳輸數據的問題。同時,也用于自帶線程池的緩沖隊列中,了解也有助于理解線程池的工作模型。 引言 在java.util.Concurrent包中,BlockingQueue很好的解決了在多線程中,如何高效安全傳輸數據的問題。通過這些高效并且線程安全的隊列類,為我們快速搭建高質量的多線程程序帶來極大的便利。同時,BlockingQueue也用于...
閱讀 3316·2021-11-25 09:43
閱讀 1304·2021-11-23 09:51
閱讀 3609·2021-10-11 11:06
閱讀 3698·2021-08-31 09:41
閱讀 3597·2019-08-30 15:53
閱讀 3510·2019-08-30 15:53
閱讀 965·2019-08-30 15:43
閱讀 3307·2019-08-29 14:02