模拟妈妈做饭,做饭时发现没有盐了,让儿子去买盐(假设买盐需要3分钟),只有盐买回来之后,妈妈才能继续做饭的过程。
class Mather{
public void zuoFan(){
System.out.println("做饭发现没盐了");
new Son().start();
System.out.println("继续做饭");
}
}
class Son extends Thread{
public void run(){
Thread.sleep(3000);
}
}
题目出的是不太严谨,其实题目就是想考一下Thread.sleep()方法的使用而已
我的答案:
public class Test10 {
public static void main(String[] args) {
cook();
System.out.println("做完饭了.....");
}
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//new Son().maiyan();
new Mather().zuofan();
}
}
class YanGuan
{
private static int yan;
public static int getYan() {
return yan;
}
public static void setYan(int yan) {
YanGuan.yan = yan;
}
}
class Mather
{
int yan = YanGuan.getYan();
public void zuofan() throws Exception
{
while(yan==0)
{
System.out.println("盐罐没盐了,儿子去买盐!");
new Son().maiyan();
yan = YanGuan.getYan();
}
System.out.println("妈妈做饭中...");
}
}
class Son
{
public void maiyan() throws InterruptedException
{
System.out.println("儿子买盐用了三分钟");
YanGuan.setYan(10);
}
}
只有盐买回来之后,妈妈才能继续做饭的过程 对于这句的理解:可以让线程停下 ,上面没有做 我用了输出语句表示 上面有while循环,只有有盐的情况下做饭才能接续
楼主,你没发现你的代码运行结果是盐还没买回来,反已经继续做了啊,其实按照你说的要等儿子买盐回来在继续做饭,就是单线程,想药多线程的话,就应该让儿子去买盐,然后妈妈先做别的,等儿子买盐回来,在继续做饭。
class Mather{
public void zuoFan(){
System.out.println("做饭发现没盐了");
new Son().start();
System.out.println("做其它的,儿子买盐回来在继续做饭");
}
}
class Son extends Thread{
public void run(){
Thread.sleep(180000);
System.out.println("买盐归来,喊妈妈继续做饭");