国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - JAVA生產者消費者(線程同步)代碼學習示例

JAVA生產者消費者(線程同步)代碼學習示例

2019-10-22 11:28java之家 Java教程

這篇文章主要介紹了JAVA線程同步的代碼學習示例,大家參考使用吧

一、問題描述

生產者消費者問題是一個典型的線程同步問題。生產者生產商品放到容器中,容器有一定的容量(只能順序放,先放后拿),消費者消費商品,當容器滿了后,生產者等待,當容器為空時,消費者等待。當生產者將商品放入容器后,通知消費者;當消費者拿走商品后,通知生產者。

二、解決方案

對容器資源加鎖,當取得鎖后,才能對互斥資源進行操作。

 

復制代碼代碼如下:


public class ProducerConsumerTest {

    public static void main(String []args){
        Container con = new Container();
        Producer p = new Producer(con);
        Consumer c = new Consumer(con);
        new Thread(p).start();
        new Thread(c).start();
    }

 

}


class Goods{
    int id;
    public Goods(int id){
        this.id=id;
    }

    public String toString(){
        return "商品"+this.id;
    }
}

class Container{//容器采用棧,先進后出
    private int index = 0;
    Goods[] goods = new Goods[6];

    public synchronized void push(Goods good){
        while(index==goods.length){//當容器滿了,生產者等待
            try {
                wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        goods[index]=good;
        index++;
        notifyAll();//當生產者放入商品后通知消費者
    }

    public synchronized Goods pop(){
        while(index==0){//當容器內沒有商品是等待
            try {
                wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        index--;
        notifyAll();//當消費者消費了商品后通知生產者
        return goods[index];
    }
}

class Producer implements Runnable{

    Container con = new Container();
    public Producer(Container con){
        this.con=con;
    }

    public void run(){
        for(int i=0; i<20; i++){
            Goods good = new Goods(i);
            con.push(good);
            System.out.println("生產了:"+good);
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

}

class Consumer implements Runnable{

    Container con = new Container();
    public Consumer(Container con){
        this.con=con;
    }

    public void run(){
        for(int i=0; i<20; i++){
            Goods good=con.pop();
            System.out.println("消費了:"+good);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    
}

 

延伸 · 閱讀

精彩推薦
575
主站蜘蛛池模板: 久久99精品国产麻豆婷婷 | 日韩高清在线一区 | 先锋影音av在线 | 国产黄色在线网站 | 精品国产一区二区 | av网站地址 | 久久久麻豆 | 久久综合一区 | 黄色一级免费片 | av中文字幕在线观看 | 中文字幕第七页 | 能直接看的av网站 | 九九九久久国产免费 | 久久久久亚洲美女啪啪 | 在线成人国产 | 国产视频一区在线 | 午夜精品福利电影 | 91高清在线| 久久精品视频免费 | 久草视频网 | 在线不卡一区 | 亚洲精品视频免费观看 | 一区二区免费在线观看 | 黄色短视频在线观看 | 男女xx网站 | 亚洲不卡视频 | 精品国产一区二区三区四 | 日本高清视频在线播放 | 精品一区二区三区免费视频 | 亚洲va国产va天堂va久久 | 成人免费一区二区三区视频网站 | 91精品国产综合久久福利软件 | 午夜三区| 国产美女在线播放 | 国产精品成人观看视频国产奇米 | 欧美性网 | 日韩中文字幕视频在线 | 亚洲精品久久久 | 亚洲综合在线视频 | 欧美国产日韩一区 | a免费视频 |