读书人

模拟烧茶的进程

发布时间: 2012-10-24 14:15:58 作者: rapoo

模拟烧茶的过程

 模拟烧茶的过程:     1)烧水     2)需要茶叶的时候发现没茶叶,叫eric去买(没有茶叶,需要买)     3)需要杯子的时候发现没杯子,叫meten去买(没有杯子,需要买)     4)放茶叶     3)倒水 public class ExecDemo2 {  public static void main(String[] args){    Tea tea = new Tea();  tea.setTea(false);    Teacup teacup = new Teacup();  teacup.setTeacup(false);    Thread burntTea = new BurntTea(tea,teacup,"勾力");  burntTea.start(); }}/** * 共享数据Tea * @author Administrator * */class Tea{  private boolean isTea; public boolean isTea() {  return isTea; } public void setTea(boolean isTea) {  this.isTea = isTea; } }/** *  共享数据Teacup * @author Administrator * */class Teacup{  private boolean isTeacup; public boolean isTeacup() {  return isTeacup; } public void setTeacup(boolean isTeacup) {  this.isTeacup = isTeacup; }  }/** * 管理线程 BurntTea * @author Administrator * */class BurntTea extends Thread {  private Tea tea; private Teacup teacup; public BurntTea(Tea tea, Teacup teacup,String name){    super(name);  this.tea = tea;  this.teacup = teacup; }  public void run(){    String name = Thread.currentThread().getName();  System.out.println(name + "准备烧茶啦");  System.out.println(name + "烧水啦");  while(!this.tea.isTea()){   System.out.println(name + "发现没茶叶啦");   Runnable buyTea = new BuyTea(tea);   Thread buyTeaThread = new Thread(buyTea,"eric");   buyTeaThread.start();   try {    buyTeaThread.join();   } catch (InterruptedException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }   if(this.tea.isTea()){    break;   }  }    while(!this.teacup.isTeacup()){   System.out.println(name + "发现没有茶杯啦");   Thread buyTeacup = new BuyTeacup(teacup,"meten");   buyTeacup.start();   try {    buyTeacup.join();   } catch (InterruptedException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }   if(this.teacup.isTeacup()){    break;   }  }  System.out.println(name + "放茶叶");  System.out.println(name + "放水");  try {   Thread.sleep(2000);  } catch (InterruptedException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }    System.out.println("茶烧好啦"); }}/** * 买茶杯线程 * @author Administrator * */class BuyTeacup extends Thread{  private Teacup teacup; public BuyTeacup(Teacup teacup ,String name){    super(name);  this.teacup = teacup; } public void run(){    String name = Thread.currentThread().getName();  System.out.println(name + "去买茶杯了");  try {   Thread.sleep(1000);  } catch (InterruptedException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }  System.out.println(name + "买茶杯回来啦");    int a = (int)(Math.random() * 1000) % 3;  switch(a){  case 1:   System.out.println("买茶杯成功");   this.teacup.setTeacup(true);   break;  case 2:    System.out.println("买茶杯不成功");   this.teacup.setTeacup(false);   break;  case 3:   System.out.println("买茶杯成功");   this.teacup.setTeacup(true);   break;  }   }}/** * 买茶叶线程 * @author Administrator * */class BuyTea implements Runnable{  private Tea tea; public BuyTea(Tea tea){  this.tea = tea; }  public void run(){    String name = Thread.currentThread().getName();  System.out.println(name + "去买茶叶了");  try {   Thread.sleep(1000);  } catch (InterruptedException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }    System.out.println(name + "买茶叶回来啦");    int a = (int)(Math.random() * 1000) % 4;  switch(a){  case 1:   System.out.println("买茶叶成功");   this.tea.setTea(true);   break;  case 2 :   System.out.println("买茶叶不成功");   this.tea.setTea(false);   break;  case 3:   System.out.println("买茶叶成功");   this.tea.setTea(true);   break;  case 4:   System.out.println("买茶叶不成功");   this.tea.setTea(false);   break;  }   }} 

?

读书人网 >编程

热点推荐