第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

入坑JAVA多線程并發(fā)(五)生產(chǎn)者消費(fèi)者模式

標(biāo)簽:
Java

生产者消费者模式对于理解多线程是一个很经典,也很好的例子

资源类:

class Resource{    //资源初始化个数
    private int init;    //资源最大个数
    private int Max;    public Resource(int init,int Max){        this.init = init;        this.Max = Max;
    }    //生产资源的方法
    public synchronized void add(){        if(init<Max){
            System.out.println(Thread.currentThread().getName()+"生产一个资源,"+"当前一共"+ ++init +"个资源");
            notifyAll();   //通知消费者消耗资源
        }else{            try {
                System.out.println("资源已满"+Thread.currentThread().getName()+"进入休息");
                wait();    //进入休息状态
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }    //消耗资源的方法
    public synchronized void sub(){        if(init>0){
            System.out.println(Thread.currentThread().getName()+"消费一个资源,"+"当前一共"+ --init +"个资源");
            notifyAll();   //唤醒生产者生产资源
        }else{            try {
                System.out.println("资源已全部消耗"+Thread.currentThread().getName()+"进入等待");
                wait();    //等待资源生产
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
消费者:
class Consumer extends Thread{    private Resource resource;    public Consumer(Resource resource,String name){        super(name);        this.resource = resource;
    }    @Override
    public void run() {        while(true){            try {
                Thread.sleep(100);    //休眠模拟消耗资源消耗的时间
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            resource.sub();
        }
    }
}

生产者:

class Producer extends Thread{    private Resource resource;    public Producer(Resource resource,String name){        super(name);        this.resource = resource;
    }    @Override
    public void run() {        while(true){            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            resource.add();
        }
    }
}

测试代码

    public static void main(String[] args) throws InterruptedException {
        Resource resource = new Resource(0,15);        new Consumer(resource,"消费者1").start();        new Consumer(resource,"消费者2").start();        new Consumer(resource,"消费者3").start();        new Producer(resource,"生产者1").start();        new Producer(resource,"生产者2").start();        new Producer(resource,"生产者3").start();        new Producer(resource,"生产者4").start();        new Producer(resource,"生产者5").start();
    }

输出:

生产者2生产一个资源,当前一共1个资源
 生产者5生产一个资源,当前一共2个资源
 生产者3生产一个资源,当前一共3个资源
 生产者4生产一个资源,当前一共4个资源
 消费者2消费一个资源,当前一共3个资源
 消费者1消费一个资源,当前一共2个资源
 消费者3消费一个资源,当前一共1个资源
 生产者1生产一个资源,当前一共2个资源
 生产者5生产一个资源,当前一共3个资源
 生产者3生产一个资源,当前一共4个资源
 生产者4生产一个资源,当前一共5个资源
 生产者2生产一个资源,当前一共6个资源
 生产者1生产一个资源,当前一共7个资源
 消费者3消费一个资源,当前一共6个资源
 消费者1消费一个资源,当前一共5个资源
 消费者2消费一个资源,当前一共4个资源
 生产者3生产一个资源,当前一共5个资源
 生产者4生产一个资源,当前一共6个资源
 生产者5生产一个资源,当前一共7个资源
 生产者2生产一个资源,当前一共8个资源
 消费者2消费一个资源,当前一共7个资源
 生产者1生产一个资源,当前一共8个资源
 消费者3消费一个资源,当前一共7个资源
 消费者1消费一个资源,当前一共6个资源
 生产者5生产一个资源,当前一共7个资源
 生产者4生产一个资源,当前一共8个资源
 生产者3生产一个资源,当前一共9个资源
 生产者2生产一个资源,当前一共10个资源
 消费者1消费一个资源,当前一共9个资源
 消费者3消费一个资源,当前一共8个资源
 生产者1生产一个资源,当前一共9个资源
 消费者2消费一个资源,当前一共8个资源
 生产者5生产一个资源,当前一共9个资源
 生产者4生产一个资源,当前一共10个资源
 生产者3生产一个资源,当前一共11个资源
 生产者2生产一个资源,当前一共12个资源
 生产者1生产一个资源,当前一共13个资源
 消费者3消费一个资源,当前一共12个资源
 消费者2消费一个资源,当前一共11个资源
 消费者1消费一个资源,当前一共10个资源
 生产者4生产一个资源,当前一共11个资源
 生产者2生产一个资源,当前一共12个资源
 生产者5生产一个资源,当前一共13个资源
 生产者3生产一个资源,当前一共14个资源
 消费者1消费一个资源,当前一共13个资源
 生产者1生产一个资源,当前一共14个资源
 消费者2消费一个资源,当前一共13个资源
 消费者3消费一个资源,当前一共12个资源
 生产者4生产一个资源,当前一共13个资源
 生产者5生产一个资源,当前一共14个资源
 生产者3生产一个资源,当前一共15个资源
 资源已满生产者2进入休息
 消费者3消费一个资源,当前一共14个资源
 消费者2消费一个资源,当前一共13个资源
 消费者1消费一个资源,当前一共12个资源
 生产者1生产一个资源,当前一共13个资源
 生产者3生产一个资源,当前一共14个资源
 生产者5生产一个资源,当前一共15个资源
 资源已满生产者4进入休息
 资源已满生产者2进入休息
 消费者1消费一个资源,当前一共14个资源
 消费者2消费一个资源,当前一共13个资源
 生产者1生产一个资源,当前一共14个资源
 消费者3消费一个资源,当前一共13个资源
 生产者3生产一个资源,当前一共14个资源
 生产者5生产一个资源,当前一共15个资源
 资源已满生产者4进入休息
 资源已满生产者2进入休息
 消费者1消费一个资源,当前一共14个资源
 消费者2消费一个资源,当前一共13个资源
 生产者1生产一个资源,当前一共14个资源
 消费者3消费一个资源,当前一共13个资源
 生产者5生产一个资源,当前一共14个资源
 生产者3生产一个资源,当前一共15个资源
 资源已满生产者4进入休息
 消费者1消费一个资源,当前一共14个资源

原文出处

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消