亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

java之BlockingQueue實(shí)現(xiàn)生產(chǎn)者消費(fèi)者

李義 / 2043人閱讀

摘要:直接上代碼注意在使用實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模型時(shí)候,泛型使用若等對(duì)象時(shí)候會(huì)發(fā)現(xiàn)消費(fèi)者出現(xiàn)異常,這是由于傳值和傳引用的區(qū)別,而由于的自動(dòng)裝箱不會(huì)出現(xiàn)此類問(wèn)題,具體可自行嘗試生產(chǎn)者消費(fèi)者獲取失敗主線程

直接上代碼
注意在使用blockingqueue實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模型時(shí)候,BlockingQueue泛型使用若atomic等對(duì)象時(shí)候會(huì)發(fā)現(xiàn)消費(fèi)者出現(xiàn)異常,這是由于傳值和傳引用的區(qū)別,而Integer由于java的自動(dòng)裝箱不會(huì)出現(xiàn)此類問(wèn)題,具體可自行嘗試

生產(chǎn)者

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;
            }

        }
    }
}

消費(fèi)者

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();
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/68276.html

相關(guān)文章

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

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

    entner 評(píng)論0 收藏0
  • 解讀 Java 并發(fā)隊(duì)列 BlockingQueue

    摘要:如果隊(duì)列已滿,這個(gè)時(shí)候?qū)懖僮鞯木€程進(jìn)入到寫線程隊(duì)列排隊(duì),等待讀線程將隊(duì)列元素移除騰出空間,然后喚醒寫線程隊(duì)列的第一個(gè)等待線程。數(shù)據(jù)必須從某個(gè)寫線程交給某個(gè)讀線程,而不是寫到某個(gè)隊(duì)列中等待被消費(fèi)。 前言 本文直接參考 Doug Lea 寫的 Java doc 和注釋,這也是我們?cè)趯W(xué)習(xí) java 并發(fā)包時(shí)最好的材料了。希望大家能有所思、有所悟,學(xué)習(xí) Doug Lea 的代碼風(fēng)格,并將其優(yōu)雅...

    maochunguang 評(píng)論0 收藏0
  • java高并發(fā)從零到放棄(五)

    摘要:前言這篇主要來(lái)講解多線程中一個(gè)非常經(jīng)典的設(shè)計(jì)模式包括它的基礎(chǔ)到拓展希望大家能夠有所收獲生產(chǎn)者消費(fèi)者模式簡(jiǎn)述此設(shè)計(jì)模式中主要分兩類線程生產(chǎn)者線程和消費(fèi)者線程生產(chǎn)者提供數(shù)據(jù)和任務(wù)消費(fèi)者處理數(shù)據(jù)和任務(wù)該模式的核心就是數(shù)據(jù)和任務(wù)的交互點(diǎn)共享內(nèi)存緩 前言 這篇主要來(lái)講解多線程中一個(gè)非常經(jīng)典的設(shè)計(jì)模式包括它的基礎(chǔ)到拓展希望大家能夠有所收獲 生產(chǎn)者-消費(fèi)者模式簡(jiǎn)述 此設(shè)計(jì)模式中主要分兩類線程:生產(chǎn)者...

    meislzhua 評(píng)論0 收藏0
  • BlockingQueue學(xué)習(xí)

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

    xuhong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<