生产者消费者

原创 2015年11月18日 10:22:04
class Source {
    private int num = 0;
    public synchronized void increase() {
        while(num != 0) {
            try {
                wait();
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
        num++;
        System.out.println(num);
        notify();
    }
    public synchronized void decrease() {
        while(num == 0) {
            try {
                wait();
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
        num--;
        System.out.println(num);
        notify();
    }
}

class Producer implements Runnable{
    private Source source;
    Producer(Source source) {
        this.source = source;
    }
    public void run() {
        for(int i=0; i<10; i++) {
            /*try {
            Thread.sleep((long)Math.random()*1000);
            }
            catch(Exception e) {
                e.printStackTrace();
            }*/
            source.increase();
        }
    }
}

class Consumer implements Runnable{
    private Source source;
    public Consumer(Source source) {
        this.source = source;
    }
    public void run() {
        for(int i=0; i<10; i++) {
            /*try {
            Thread.sleep((long)Math.random()*1000);
            }
            catch(Exception e) {
                e.printStackTrace();
            }*/
            source.decrease();
        }

    }
}

public class Mian {
    public static void main(String[] args) {
        Source s = new Source();
        new Thread(new Producer(s)).start();
        new Thread(new Consumer(s)).start();
    }

}
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)