为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的调用军队方法是成功的但是不执行循环里面的内容?

package com.imooc.war;

//        军队

public class Host implements Runnable {


// volatile  关键字保证线程可以正确读取其他线程传入的值

volatile boolean mm=true;


@Override

public void run() {

while(mm){

for(int i=1;i<=20;i++){

if(Thread.currentThread().getName().equals("毛毛"))

System.out.println(Thread.currentThread().getName()+"第"+i+"次  踩脚");

if(Thread.currentThread().getName().equals("蛋蛋"))

System.out.println(Thread.currentThread().getName()+"第"+i+"次  打屁股");

// 让出处理器时间

Thread.yield();

// if(i==20){

// mm=false;

// }

}

}

System.out.println(Thread.currentThread().getName()+"   结束!");

}

}

------------------

package com.imooc.war;


//           作战地点

public class stage implements Runnable {


@Override

public void run() {

Host mm=new Host();

Host dd=new Host();

Thread mmt=new Thread(mm, "毛毛");

Thread ddt=new Thread(dd, "蛋蛋");

try {

Thread.sleep(500);

} catch (InterruptedException e1) {

e1.printStackTrace();

}

mmt.start();

ddt.start();

mm.mm=false;

dd.mm=false;

try {

mmt.join();

} catch (InterruptedException e) {

e.printStackTrace();

}

}


public static void main(String[] args) {

new stage().run();

}

}


-------------

输出 仅有:

蛋蛋   结束!

毛毛   结束!


正在回答

2 回答

mmt.start();

ddt.start();

try {

Thread.sleep(5000);

} catch (InterruptedException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

mm.mm=false;

dd.mm=false;

这样就好了,原先可能是你没有让Stage线程休眠,然后程序运行到mmt.start(); ddt.start();后就接着运行mm.mm=false; dd.mm=false;了  所以出现那样的情况,,,,,,,个人见解,,本人 也是新手,,所以建议只供参考



0 回复 有任何疑惑可以回复我~

粘贴有误

public class stage extends Thread 


stage s=new stage();

s.start();


0 回复 有任何疑惑可以回复我~
#1

qq_筑城以北_04274162 提问者

输出结果无误
2017-05-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我的调用军队方法是成功的但是不执行循环里面的内容?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号