首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

生产者/消费者方式1

2012-06-27 
生产者/消费者模式1package demoimport java.util.ArrayListimport java.util.List/*?生产者/消费者模

生产者/消费者模式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;

热点排行