生产者和消费者问题

来源:互联网 发布:淘宝店铺招牌是什么 编辑:程序博客网 时间:2024/06/02 04:14


生产者和消费者同时进行,但消费者必须等待生产者生产出了产品才能进行消费。所以当消费者需要消费的物资为不足时,需要等待,等到生产者生产出了该产品在唤醒消费者的等待机制。

import java.util.*;public class Producer implements Runnable{public  List<Integer> list=null;public Producer(List list){this.list=list;}public void run(){int i=0;//生产十个while(i<10){synchronized(list){list.add(++i);System.out.println("生产出了:"+i);list.notify();}}}}
import java.util.List;public class Customer extends Thread{private List<Integer> list=null;public Customer(List list){this.list=list;}public void run(){int i=0;while(i!=10)synchronized(list){if(list.size()==0){try {list.wait();} catch (InterruptedException e) {e.printStackTrace();}}Integer temp=list.get(list.size()-1);System.out.println("消费:"+temp);list.remove(temp);}}}
import java.util.ArrayList;import java.util.List;public class Test {public static void main(String[] args){List<Integer> list=new ArrayList<Integer>();Producer p=new Producer(list);Thread t=new Thread(p);//实现了Runnable接口Customer c=new Customer(list);System.out.println("开始:");c.start();t.start();}}

测试结果:

开始:
生产出了:1
生产出了:2
生产出了:3
生产出了:4
生产出了:5
生产出了:6
生产出了:7
生产出了:8
消费:8
消费:7
生产出了:9
生产出了:10
消费:10
消费:9
消费:6
消费:5
消费:4
消费:3
消费:2
消费:1



0 0
原创粉丝点击