生产者消费者

原创 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();
    }

}

相关文章推荐

Rocketmq生产者和push消费者demo

1.Rocketmq生产者 public class Producer { public static void main(String[] args) throws MQClientExc...

生产者和消费者文档

  • 2016年02月26日 14:22
  • 182KB
  • 下载

用BlockingQueue实现一个简单的生产者-消费者模型

先上代码: package kevin; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.B...

生产者与消费者

  • 2013年09月02日 08:29
  • 4KB
  • 下载

生产者消费者

  • 2013年09月06日 11:27
  • 1KB
  • 下载

秒杀多线程第十篇 生产者消费者问题

继经典线程同步问题之后,我们来看看生产者消费者问题及读者写者问题。生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消...

生产者消费者C++源码

  • 2014年03月24日 15:15
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:生产者消费者
举报原因:
原因补充:

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