我自己运行的代码,起义军和隋军几乎是交替执行,而且开始的时候不是从0开始的
线程是通过抢占CPU资源去运行的,随机交替着是随机的现象;至于不是从0开始,可以通过代码的调试,去看i的变化。
不是从零开始的问题是数据太大,无法显示那么多,不过为什么我的代码没有出现过单方面连击的情况,都是交替进行的
package com.haha; public class ArmyRunnable implements Runnable { volatile boolean keepRuning = true; @Override public void run() { while(keepRuning){ for (int i = 0; i < 5; i++){ System.out.println(Thread.currentThread().getName() + "攻击[" + (i+1) + "]"); //让出处理器时间 Thread.yield(); } } System.out.println(Thread.currentThread().getName() + "结束战斗"); } }
volatile 写了吗?代码怎么写的