编写生产者/消费者模式的程序

importjava.util.*;

public classMyNumber {

privateListnum=newArrayList();

public static voidmain(String args[]) {

MyNumber m =newMyNumber();

newThread(newConsumer(m.getNum()),"消费者").start();

newThread(newProducer(m.getNum()),"生产者").start();

}

publicList getNum() {

returnnum;

}

}

classConsumerimplementsRunnable {

privateListnum=null;

private intcount=0;

publicConsumer(List list) {

this.num= list;

}

@Override

public voidrun() {

//TODO 自动生成的方法存根while(count<100) {

synchronized(num) {

String name = Thread.currentThread().getName();

if(num.size() ==0) {

try{

num.wait();

}catch(InterruptedException e) {

e.printStackTrace();

}

}else{

if(num.size() >0) {

num.remove(0);

num.notifyAll();

count++;

//System.out.println(name + "取出了数字" + num.get(0) + "!!!");System.out.println("现在还剩"+num.size() +"数字!");

}

}

}

}

}

}

classProducerimplementsRunnable {

privateListnum=null;

private intcount=0;

publicProducer(List list) {

this.num= list;

}

@Override

public voidrun() {

//TODO 自动生成的方法存根while(count<100) {

synchronized(num) {

String name = Thread.currentThread().getName();

if(num.size() >5) {

try{

num.wait();

}catch(InterruptedException e) {

e.printStackTrace();

}

}else{

String num1 =getNum();

num.add(num1);

num.notifyAll();

try{

Thread.sleep(100);

}catch(InterruptedException e) {

//TODO 自动生成的 catch 块e.printStackTrace();

}

count++;

System.out.println(name +"添加了一个数字!");

System.out.println("现在还有"+num.size() +"数字!");

}

}

}

}

private staticString getNum() {

String st;

Random ra =newRandom();

inta = ra.nextInt(9);

st = String.valueOf(a);

returnst;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 5,238评论 0 6
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 4,855评论 1 0
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 10,123评论 1 114
  • 这两天好多明星爆料出离婚的新闻,这大大的满足了人们的八卦窥伺的心态,同样的,也在饭桌上多了一些谈资。 后来有位同学...
    花满楼阅读 3,523评论 0 4