赵昱权
2016-09-26 16:54
public class ArmRunnable implements Runnable {
/**
* 军队runnable
* 模拟双发作战的行为
*
*/
volatile boolean keepRuning=true;
@Override
public void run() {
while(keepRuning){
//发动5连击
for(int i=0;i<5;i++){
System.out.println(Thread.currentThread().getName()+"进攻对方["+i+"]");
//让出了处理器时间,下次该谁进攻还不一定呢!
Thread.yield();
}
}
System.out.println(Thread.currentThread().getName()+"结束了战斗!");
}
public class Stage extends Thread {
private final Object obj=new Object();
public void run(){
// TODO 自动生成的方法存根
System.out.println("隋唐演义上演,大幕徐徐拉开");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
//军队登场
ArmRunnable suijun=new ArmRunnable();
ArmRunnable qiyijun=new ArmRunnable();
//构建两个线程
Thread sui=new Thread(suijun,"隋军");
Thread nong=new Thread(qiyijun,"农民起义军");
sui.start();
nong.start();
suijun.keepRuning=false;
qiyijun.keepRuning=false;
不知道我又错在哪里了?
因为隋朝军队,农民起义军,和舞台进程优先级相同,
军队没有执行while循环是因为先执行了suijun.keepRuning = false;和qiyijun.keepRuning=false;
深入浅出Java多线程
186071 学习 · 498 问题
相似问题