原创 

java一对一生产者消费者多线程练习

分类:    572人阅读    IT小君  2017-04-24 10:36

消费者OTO_Consumer类:


/**
 * Created by YouGuessWho on 2017/4/22.
 */
public class OTO_Consumer extends Thread {
    /**
     * 编号
     */
    private Integer num;
    private Object lock;

    public OTO_Consumer(String name,Integer num,Object lock){
        super();
        this.setName(name);
        this.setNum(num);
        this.setLock(lock);
    }

    public void run(){
        try {
            while(true) {
                this.consume();
                this.sleep(3000);
            }
        }catch(final Exception ex){
            System.out.println(ex);
        }
    }

    private void consume()throws Exception{
        synchronized(this.lock){
            if(Warehouse.simpleWH==null){
                this.say("没货了");
                lock.wait();
            }
            this.say("消费了"+Warehouse.simpleWH);
            Warehouse.simpleWH = null;
            lock.notify();
        }
    }

    private void say(String word){
        System.out.println(String.format("时间:%s,%s,编号%03d:%s",System.currentTimeMillis(),this.getName(),this.getNum(),word));
    }

    public Integer getNum() {
        return num;
    }

    public void setNum(Integer num) {
        this.num = num;
    }

    public Object getLock() {
        return lock;
    }

    public void setLock(Object lock) {
        this.lock = lock;
    }
}


生产者():


/**
 * Created by YouGuessWho on 2017/4/22.
 */
public class OTO_Producer extends Thread {
    /**
     * 编号
     */
    private Integer num;
    private Object lock;

    public OTO_Producer(String name,Integer num,Object lock){
        super();
        this.setName(name);
        this.setNum(num);
        this.setLock(lock);
    }

    public void run(){
        try {
            while(true) {
                this.produce();
                this.sleep(3000);
            }
        }catch(final Exception ex){
            System.out.println(ex);
        }
    }

    private void produce()throws Exception{
        synchronized(this.lock){
            if(Warehouse.simpleWH!=null){
                this.say("还有产品");
                lock.wait();
            }
            Warehouse.simpleWH = "产品"+System.currentTimeMillis();
            this.say("生产了"+Warehouse.simpleWH);
            lock.notify();
        }
    }

    private void say(String word){
        System.out.println(String.format("时间:%s,%s,编号%03d:%s",System.currentTimeMillis(),this.getName(),this.getNum(),word));
    }

    public Integer getNum() {
        return num;
    }

    public void setNum(Integer num) {
        this.num = num;
    }

    public Object getLock() {
        return lock;
    }

    public void setLock(Object lock) {
        this.lock = lock;
    }
}

启动类(Producer_Consumer_OneToOne);


/**
 * Created by YouGuessWho on 2017/4/22.
 */
public class Producer_Consumer_OneToOne {

    public static void main(String[] arg){
        Object lock = new Object();
        OTO_Producer producer = new OTO_Producer("简单生产者",1,lock);
        OTO_Consumer consumer = new OTO_Consumer("简单消费者",1,lock);
        producer.start();
        consumer.start();
    }
}


点击广告,支持我们为你提供更好的服务

jQuery右端悬浮带返回顶部特效

有机水果蔬菜HTML5网站模板

html5 svg夜空中星星流星动画场景特效

响应式太阳能能源公司网站模板

HTML5 Canvas竖直流动线条背景动画特效

html5 canvas彩色碎片组合球形旋转动画特效

中小型创意设计服务公司网站模板

js+css3抽奖转盘旋转点餐代码

html5 canvas进度条圆环图表统计动画特效

css+js实现的颜色渐变数字时钟动画特效

小众时尚单品在线电子商务网站模板

响应式咖啡饮品宣传网站模板

css鼠标跟随文字模糊特效

html5图标下拉搜索框自动匹配代码

HTML5现代家居装潢公司网站模板

响应式时尚单品在线商城网站模板

canvas炫酷鼠标移动文字粒子特效

网页设计开发公司网站模板

现代时尚家具公司网站模板

HTML5数字产品服务公司网站模板

点击广告,支持我们为你提供更好的服务
 工具推荐 更多»
点击广告,支持我们为你提供更好的服务