码迷,mamicode.com
首页 > 编程语言 > 详细

线程之间的通信(卖面包)

时间:2017-05-13 22:16:12      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:thread   tor   todo   pack   pre   sleep   ram   java   except   

package mianbao;

import java.util.Random;

public class TestBread {

    /**
     * @param args
     */
    public static void main(String[] args) {
    Store store=new Store();
    Maker m=new Maker(store);
    Saler s=new Saler(store);
    m.start();
    s.start();

    }

}
//面包店类
class Store{
    int num=0;//面包的个数
    Random r=new Random();
//生产面包    
public synchronized    void make(){
    if(num==0){
        num=r.nextInt(20)+1;
        System.out.println("面包生产完毕         共有"+num);
    }
//通知消费者来卖面包,自己阻塞    
    this.notify();
    try {
        this.wait();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
}
//销售面包
public synchronized void sale(){
    if(num>0){
        int i=r.nextInt(num)+1;
        System.out.println("销售面包数:"+i);
        num-=i;
    }else{
        //通知生产者生产面包
        this.notifyAll();//在这个程序里与notify()相同
        try {
            this.wait();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
    
}
//生产者线程
class Maker extends Thread{
    Store s;

    public Maker(Store s) {
        super();
        this.s = s;
    }
    public void run(){
        while(true){
            s.make();
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}
class Saler extends Thread{
    Store s;

    public Saler(Store s) {
        super();
        this.s = s;
    }
    public void run(){
        while(true){
            s.sale();
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

 

线程之间的通信(卖面包)

标签:thread   tor   todo   pack   pre   sleep   ram   java   except   

原文地址:http://www.cnblogs.com/zyy1130/p/6850328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!