使用多线程完成洗菜、切菜、炒菜、上菜操作

要求:总共有3种菜,上菜必须等所有的菜都炒完才能上菜。

提示:如图可知:切菜需等待洗菜完成以后再切菜,所以切菜线程中先sleep(300);炒菜需先洗菜并切菜,所以炒菜线程中先sleep(500);因每人的CPU不同,所以适当增加sleep的时间以规避还未洗完就已经开始切菜,或者还未切菜就已经炒菜的问题

上菜ShangCai
package Homework;

public class Shangcai extends Thread {
	@Override
	public void run() {
		for (int i = 1; i < 4; i++) {
			System.out.println("上第" + i + "个菜");
			try {
				this.sleep(100);
				System.out.println("第" + i + "个菜上完");
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

炒菜操作ChaoCai
package Homework;

public class Chaocai extends Thread {
	@Override
	public void run() {
                //规避提示的问题
		try {
			this.sleep(700);
		} catch (InterruptedException e1) {
			e1.printStackTrace();
		}
		for (int i = 1; i < 4; i++) {
			System.out.println("开始炒第" + i + "个菜");
			try {
				this.sleep(500);
				System.out.println("第" + i + "个菜炒完了");
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

切菜操作:QieCai
package Homework;

public class Qiecai extends Thread {
	@Override
	public void run() {
		for (int i = 1; i < 4; i++) {
                        //规避提示的问题
			try {
				this.sleep(350);
			} catch (InterruptedException e1) {
				e1.printStackTrace();
			}
			System.out.println("正在切第" + i + "个菜");
			try {
				this.sleep(200);
				System.out.println("第" + i + "个菜切完了");
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}
洗菜操作洗菜:
package Homework;

public class Xicai extends Thread {
	@Override
	public void run() {
		for (int i = 1; i < 4; i++) {
			System.out.println("正在洗第" + i + "个菜");
                        //规避提示的问题
			try {
				this.sleep(300);
				System.out.println("洗完第" + i + "个菜");
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

测试类Test
package Homework;

public class Test1 {
	public static void main(String[] args) throws InterruptedException {

		Xicai xc = new Xicai();
		Qiecai qc = new Qiecai();
		Chaocai cc = new Chaocai();
		Shangcai sc = new Shangcai();
		
		xc.start();
		qc.start();
		cc.start();
		
		xc.join();
		qc.join();
		cc.join();
		sc.start();
	}
}

posted @ 2021-02-23 22:08  阿伦啊  阅读(170)  评论(0编辑  收藏  举报