java多线程-军队战争
Posted fxw-learning
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java多线程-军队战争相关的知识,希望对你有一定的参考价值。
1 package cn.test.muke; 2 3 4 //军队线程 5 //模拟作战双方的行为 6 public class ArmyRunnable implements Runnable{ 7 8 // volatile保证了线程可以正确的读取其他线程写入的值 9 // 可见性 refer JMM,happens-before原则 10 volatile boolean keepRunning = true; 11 12 @Override 13 public void run() { 14 15 while(keepRunning) { 16 // 发动5连击 17 for(int i = 0;i < 5;i++) { 18 System.out.println(Thread.currentThread().getName()+ "进攻对方["+i+"]"); 19 // 使得当前进程可以让出处理器,下一次是谁不一定 20 Thread.yield(); 21 } 22 23 } 24 25 System.out.println(Thread.currentThread()+"结束了战斗"); 26 27 } 28 29 }
1 package cn.test.muke; 2 /** 3 * 隋唐演义大戏舞台 4 * @author Tony Fan 5 * 6 */ 7 public class Stage extends Thread { 8 9 public void run() { 10 11 // 隋朝军队 12 ArmyRunnable armyTaskOfSuiDynasty = new ArmyRunnable(); 13 // 农民起义军 14 ArmyRunnable armyTaskOfRevolt = new ArmyRunnable(); 15 16 //使用Runnable接口创建线程 17 Thread armyOfSuiDynasty = new Thread(armyTaskOfSuiDynasty,"隋军"); 18 Thread armyOfRevolt = new Thread(armyTaskOfRevolt,"农民起义军"); 19 20 //启动线程,让军队开始作战 21 armyOfSuiDynasty.start(); 22 armyOfRevolt.start(); 23 24 25 //舞台线程休眠,大家专心观看均对厮杀 26 try { 27 Thread.sleep(50); 28 } catch (InterruptedException e) { 29 // TODO Auto-generated catch block 30 e.printStackTrace(); 31 } 32 33 armyTaskOfSuiDynasty.keepRunning = false; 34 armyTaskOfRevolt.keepRunning = false; 35 36 try { 37 armyOfRevolt.join(); 38 } catch (InterruptedException e) { 39 // TODO Auto-generated catch block 40 e.printStackTrace(); 41 } 42 } 43 44 public static void main(String[] args) { 45 // TODO Auto-generated method stub 46 new Stage().start(); 47 48 } 49 50 }
以上是关于java多线程-军队战争的主要内容,如果未能解决你的问题,请参考以下文章