老师布置的奇葩作业(喝茶问题)

package practice;

/*

* 6、

老妈想喝茶,喝茶需要有茶具和茶叶,家里没有就需要两个儿子,

各自去买,买的东西不一样,花费时间不一样,例如,老大去买茶叶需要10分钟,

老二去买茶具需要8分钟,一起出的门,老二回来时,老妈依旧不能如愿喝茶,

只有当两个儿子都回到家时,才能如愿煮水泡茶喝

*/

public class TeaTest {

public static void main(String[] args) {

Desk desk = new Desk();

Mother m = new Mother(desk);

m.start();

}

}

class Mother extends Thread {

private Desk desk;

public Mother(Desk desk) {

this.desk = desk;

}

public void run() {

System.out.println("想喝茶");

synchronized (desk) {

if (desk.getCup() == 0) {

System.out.println("想喝茶,没茶杯,mike去买");

Mike mike = new Mike(desk);

mike.start();

}

if (desk.getTea() == 0) {

System.out.println("想喝茶,没茶叶,tom去买");

Tom tom = new Tom(desk);

tom.start();

}

while(desk.getTea() == 0||desk.getCup() == 0) {

try {

desk.wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println("可以喝茶");

}

}

}

class Mike extends Thread {

private Desk desk;

public Mike(Desk desk) {

this.desk = desk;

}

public void run() {

System.out.println("我是mike,老妈叫我买茶杯");

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

desk.setCup(1);

}

}

class Tom extends Thread {

private Desk desk;

public Tom(Desk desk) {

this.desk = desk;

}

public void run() {

System.out.println("我是tom,老妈叫我买茶叶");

try {

Thread.sleep(3000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

desk.setTea(1);

}

}

class Desk extends Thread {

private int cup = 0;

private int tea = 0;

public  int getTea() {

return tea;

}

public int getCup() {

return cup;

}

public synchronized void setCup(int cup) {

this.cup = cup;

this.notify();

System.out.println("我是mike,茶杯买回来了,叫醒老妈");

}

public synchronized void setTea(int tea) {

this.tea = tea;

this.notify();

System.out.println("我是tom ,茶叶买回来了,叫醒老妈");

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容