秦家小小神
2017-07-06 00:56
public class ArmyRunnable implements Runnable { //volatile保证了线程可以正确的读取其他线程写入的值 //可见性 JMM,happens-before原则?????????????????????????? volatile boolean keepRunning; @Override public void run() { while(keepRunning){ //发动五连击 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{ @Override public void run() { //创建红蓝方攻击的实例 ArmyRunnable redAttack0 = new ArmyRunnable(); ArmyRunnable blueAttack0 = new ArmyRunnable(); //创建线程 Thread redAttack = new Thread(redAttack0,"红方军团"); Thread blueAttack = new Thread(blueAttack0,"蓝方军团"); //启动线程,开始作战 redAttack.start(); blueAttack.start(); //关闭舞台线程,保证军演专心进行 try { // this.sleep(50); Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } //关闭线程,鸣金收兵 redAttack0.keepRunning=false; blueAttack0.keepRunning=false; //保证蓝方运行结束???????????????????????? try { blueAttack.join(); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { //启动舞台,开始观战 new Stage().start(); } }
public class ArmyRunnable implements Runnable { //volatile保证了线程可以正确的读取其他线程写入的值 //可见性 JMM,happens-before原则?????????????????????????? volatile boolean keepRunning;//你这里没有赋值,默认是false,当然不会跑
深入浅出Java多线程
186088 学习 · 464 问题
相似问题