国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java之BlockingQueue實現生產者消費者

李義 / 1995人閱讀

摘要:直接上代碼注意在使用實現生產者消費者模型時候,泛型使用若等對象時候會發現消費者出現異常,這是由于傳值和傳引用的區別,而由于的自動裝箱不會出現此類問題,具體可自行嘗試生產者消費者獲取失敗主線程

直接上代碼
注意在使用blockingqueue實現生產者消費者模型時候,BlockingQueue泛型使用若atomic等對象時候會發現消費者出現異常,這是由于傳值和傳引用的區別,而Integer由于java的自動裝箱不會出現此類問題,具體可自行嘗試

生產者

public class Pull implements Runnable {

    BlockingQueue pool;

    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{

    BlockingQueue pool;

    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) {
        BlockingQueue queue = 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

相關文章

  • Java多線程進階(三一)—— J.U.Ccollections框架:BlockingQueue

    摘要:和方法會一直阻塞調用線程,直到線程被中斷或隊列狀態可用和方法會限時阻塞調用線程,直到超時或線程被中斷或隊列狀態可用。 showImg(https://segmentfault.com/img/bVbgyPy?w=1191&h=670); 本文首發于一世流云專欄:https://segmentfault.com/blog... 一、引言 從本節開始,我們將介紹juc-collectio...

    entner 評論0 收藏0
  • 解讀 Java 并發隊列 BlockingQueue

    摘要:如果隊列已滿,這個時候寫操作的線程進入到寫線程隊列排隊,等待讀線程將隊列元素移除騰出空間,然后喚醒寫線程隊列的第一個等待線程。數據必須從某個寫線程交給某個讀線程,而不是寫到某個隊列中等待被消費。 前言 本文直接參考 Doug Lea 寫的 Java doc 和注釋,這也是我們在學習 java 并發包時最好的材料了。希望大家能有所思、有所悟,學習 Doug Lea 的代碼風格,并將其優雅...

    maochunguang 評論0 收藏0
  • java高并發從零到放棄(五)

    摘要:前言這篇主要來講解多線程中一個非常經典的設計模式包括它的基礎到拓展希望大家能夠有所收獲生產者消費者模式簡述此設計模式中主要分兩類線程生產者線程和消費者線程生產者提供數據和任務消費者處理數據和任務該模式的核心就是數據和任務的交互點共享內存緩 前言 這篇主要來講解多線程中一個非常經典的設計模式包括它的基礎到拓展希望大家能夠有所收獲 生產者-消費者模式簡述 此設計模式中主要分兩類線程:生產者...

    meislzhua 評論0 收藏0
  • BlockingQueue學習

    摘要:引言在包中,很好的解決了在多線程中,如何高效安全傳輸數據的問題。同時,也用于自帶線程池的緩沖隊列中,了解也有助于理解線程池的工作模型。 引言 在java.util.Concurrent包中,BlockingQueue很好的解決了在多線程中,如何高效安全傳輸數據的問題。通過這些高效并且線程安全的隊列類,為我們快速搭建高質量的多線程程序帶來極大的便利。同時,BlockingQueue也用于...

    xuhong 評論0 收藏0

發表評論

0條評論

李義

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<