读书人

生产者/消费者方式1

发布时间: 2012-06-27 14:20:09 作者: rapoo

生产者/消费者模式1

package demo;

import java.util.ArrayList;
import java.util.List;

/*
?生产者/消费者模式
? 假设有这样一种情况:有一个盘子,盘子里只能放一颗鸡蛋。A专门往盘子里放鸡蛋,如果盘子里有鸡蛋,则一直等到盘子里没鸡蛋;
? B专门从盘子里拿鸡蛋,如果盘子里没鸡蛋,则等待直到盘子里有鸡蛋。
?* */
public class Plate {
?private List<Egg> eggs = new ArrayList<Egg>(1);
?
?public synchronized Egg getEgg(){
??while(eggs.size() == 0){
???try {
????wait();
???} catch (InterruptedException e) {
????e.printStackTrace();
???}
??}
??Egg egg = eggs.get(0);
??System.out.println("拿到鸡蛋");
??eggs.clear();//清空盘子
??notify();//唤醒放鸡蛋线程,使放鸡蛋线程放鸡蛋
??return egg;
?}
?
?public synchronized void putEgg(Egg egg){
??while(eggs.size() > 0){
???try {
????wait();
???} catch (InterruptedException e) {
????e.printStackTrace();
???}
??}
??eggs.add(egg);//往盘子里放鸡蛋
??System.out.println("放入鸡蛋");
??notify();//唤醒取鸡蛋线程,使取鸡蛋线程取鸡蛋
?}
?
?static class PutEggThread extends Thread{
??private static final int PUT_EGG_TIMES = 5;
??private Plate plate;

读书人网 >移动开发

热点推荐