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

为什么根本停不下来!!!

package com.imooc.play;


//军队线程,模拟作战双方的行为
public class Army implements Runnable {
 volatile boolean keepRunning = true;// volatile保证线程可以正确读取其他线程写入的该值


 public void run() {
  while (keepRunning = true) {
   for (int i = 0; i < 5; i++) {
    System.out.println(Thread.currentThread().getName() + "第"
      + (i + 1) + "次进攻对方");
    Thread.yield();// 让出处理器时间,下次该谁进攻还不一定
   }
  }
  System.out.println(Thread.currentThread().getName()+"战斗结束了!!");
 }
}

package com.imooc.play;


/**
 * 隋唐演义的大戏舞台
 *
 * @author cc
 *
 */


 public class Stage extends Thread {
 public void run() {
  Army army1 = new Army();
  Army army2 = new Army();
  // 使用runnable接口创建线程
  Thread army1Thread = new Thread(army1, "隋军");
  Thread army2Thread = new Thread(army2, "农民起义军");
  army1Thread.start();
  army2Thread.start();


  try {
   Thread.sleep(50);// 舞台线程休眠
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
  army1.keepRunning = false;
  army2.keepRunning = false;
  try {
   army1Thread.join();
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
 }

 public static void main(String[] args) {
  new Stage().start();

 }

}


正在回答

4 回答

Army类中while 循环的判断应该是==

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

慕粉18523865484 提问者

非常感谢!
2016-07-30 回复 有任何疑惑可以回复我~
#2

迟煾 回复 慕粉18523865484 提问者

么事么事
2016-07-30 回复 有任何疑惑可以回复我~

炫迈口香糖,炫到爆,根本停不下来

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

Java里,=是赋值,==才是判断相对

while(keepRunning=true)

你这是直接定义keepRunning值true,所以进入无限循环了

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

慕粉18523865484 提问者

非常感谢
2016-07-30 回复 有任何疑惑可以回复我~

 public void run() {
  while (keepRunning = true) {
   for (int i = 0; i < 5; i++) {

你把keepRunning 重新赋值为true了,while判断一直为真怎么可能停的下来,

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

慕粉18523865484 提问者

谢谢谢谢
2016-07-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么根本停不下来!!!

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

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

帮助反馈 APP下载

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

公众号

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