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();
}
}
Army类中while 循环的判断应该是==
炫迈口香糖,炫到爆,根本停不下来
Java里,=是赋值,==才是判断相对
while(keepRunning=true)
你这是直接定义keepRunning值true,所以进入无限循环了
public void run() {
while (keepRunning = true) {
for (int i = 0; i < 5; i++) {
你把keepRunning 重新赋值为true了,while判断一直为真怎么可能停的下来,