1.军队作战类
1 package com.imooc.concurrent.base; 2 3 //模拟双方作战的行为 4 public class ArmyRunnable implements Runnable 5 { 6 //volatile关键字保证了线程可以正确的读取其他线程写入的值 7 volatile boolean keepRunning = true; 8 @Override 9 public void run() 10 { 11 while(keepRunning) 12 { 13 //发动五连击 14 for(int i=0;i<5;i++) 15 { 16 System.out.println(Thread.currentThread().getName()+"进攻对方["+i+"]"); 17 //让出了处理器时间,下次该谁进攻还不一定呢! 18 Thread.yield(); 19 20 } 21 } 22 System.out.println(Thread.currentThread().getName()+"结束战斗了!"); 23 } 24 25 }
2.关键人物类
1 package com.imooc.concurrent.base; 2 3 //关键人物定义 4 public class KeyPersonThread extends Thread 5 { 6 public void run() 7 { 8 System.out.println(Thread.currentThread().getName()+"开始了战斗!"); 9 for(int i=0;i<5;i++) 10 { 11 System.out.println(Thread.currentThread().getName()+"排山倒海,力挽狂澜!"); 12 } 13 System.out.println(Thread.currentThread().getName()+"结束了战斗!"); 14 } 15 }
3.历史舞台类
1 package com.imooc.concurrent.base; 2 3 //隋唐演义大戏舞台 4 public class Stage extends Thread 5 { 6 public void run() 7 { 8 System.out.println("欢迎观看历史小剧隋唐演义!"); 9 //稍等片刻,等待好戏上演 10 try { 11 Thread.sleep(5000); 12 } catch (InterruptedException e1) { 13 // TODO Auto-generated catch block 14 e1.printStackTrace(); 15 } 16 System.out.println("徐徐拉开大幕:"); 17 try { 18 Thread.sleep(3000); 19 } catch (InterruptedException e1) { 20 // TODO Auto-generated catch block 21 e1.printStackTrace(); 22 } 23 System.out.println("话说隋朝末年,隋军和农民军杀得昏天黑地..."); 24 25 ArmyRunnable armyTaskOfSuiDynasty = new ArmyRunnable(); 26 ArmyRunnable armyTaskOfRevolt = new ArmyRunnable(); 27 28 //使用Runnable接口创建线程 29 Thread armyOfSuiDynasty = new Thread(armyTaskOfSuiDynasty,"隋军"); 30 Thread armyOfRevolt = new Thread(armyTaskOfRevolt,"农民起义军"); 31 //启动线程,让军队开始作战 32 armyOfSuiDynasty.start(); 33 armyOfRevolt.start(); 34 35 //舞台线程休眠 36 try 37 { 38 Thread.sleep(50); 39 } 40 catch(InterruptedException e) 41 { 42 e.printStackTrace(); 43 } 44 45 System.out.println("正当双方激战正酣,半路杀出了程咬金。"); 46 47 Thread mrCheng = new KeyPersonThread(); 48 mrCheng.setName("程咬金"); 49 System.out.println("程咬金的理想是结束战争,使百姓安居乐业!");//这是一个从小就有好抱负的娃 50 51 //停止军队作战,停止线程的方法 52 armyTaskOfSuiDynasty.keepRunning=false; 53 armyTaskOfRevolt.keepRunning=false; 54 55 try { 56 Thread.sleep(2000); 57 } catch (InterruptedException e) { 58 // TODO Auto-generated catch block 59 e.printStackTrace(); 60 } 61 62 //关键人物登场 63 mrCheng.start(); 64 65 try { 66 mrCheng.join(); 67 } catch (InterruptedException e) { 68 // TODO Auto-generated catch block 69 e.printStackTrace(); 70 } 71 72 System.out.println("战争结束,人民安居乐业,程先生实现了自己的理想!"); 73 System.out.println("隋唐演义结束,请大家有序退场。"); 74 } 75 public static void main(String[] args) 76 { 77 new Stage().start(); 78 } 79 80 }
输出结果:
欢迎观看历史小剧隋唐演义!
徐徐拉开大幕:
话说隋朝末年,隋军和农民军杀得昏天黑地...
农民起义军进攻对方[0]
隋军进攻对方[0]
农民起义军进攻对方[1]
隋军进攻对方[1]
农民起义军进攻对方[2]
隋军进攻对方[2]
农民起义军进攻对方[3]
隋军进攻对方[3]
农民起义军进攻对方[4]
隋军进攻对方[4]
农民起义军进攻对方[0]
隋军进攻对方[0]
农民起义军进攻对方[1]
隋军进攻对方[1]
隋军进攻对方[2]
农民起义军进攻对方[2]
隋军进攻对方[3]
农民起义军进攻对方[3]
隋军进攻对方[4]
农民起义军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[0]
隋军进攻对方[1]
农民起义军进攻对方[1]
隋军进攻对方[2]
农民起义军进攻对方[2]
隋军进攻对方[3]
农民起义军进攻对方[3]
隋军进攻对方[4]
农民起义军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[0]
隋军进攻对方[1]
农民起义军进攻对方[1]
隋军进攻对方[2]
农民起义军进攻对方[2]
隋军进攻对方[3]
农民起义军进攻对方[3]
隋军进攻对方[4]
农民起义军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[0]
农民起义军进攻对方[1]
农民起义军进攻对方[2]
隋军进攻对方[1]
农民起义军进攻对方[3]
隋军进攻对方[2]
农民起义军进攻对方[4]
隋军进攻对方[3]
农民起义军进攻对方[0]
隋军进攻对方[4]
农民起义军进攻对方[1]
隋军进攻对方[0]
农民起义军进攻对方[2]
隋军进攻对方[1]
隋军进攻对方[2]
农民起义军进攻对方[3]
隋军进攻对方[3]
农民起义军进攻对方[4]
隋军进攻对方[4]
农民起义军进攻对方[0]
隋军进攻对方[0]
农民起义军进攻对方[1]
农民起义军进攻对方[2]
农民起义军进攻对方[3]
隋军进攻对方[1]
农民起义军进攻对方[4]
隋军进攻对方[2]
农民起义军进攻对方[0]
隋军进攻对方[3]
农民起义军进攻对方[1]
隋军进攻对方[4]
农民起义军进攻对方[2]
隋军进攻对方[0]
农民起义军进攻对方[3]
隋军进攻对方[1]
农民起义军进攻对方[4]
隋军进攻对方[2]
农民起义军进攻对方[0]
隋军进攻对方[3]
农民起义军进攻对方[1]
隋军进攻对方[4]
农民起义军进攻对方[2]
隋军进攻对方[0]
农民起义军进攻对方[3]
隋军进攻对方[1]
农民起义军进攻对方[4]
隋军进攻对方[2]
农民起义军进攻对方[0]
隋军进攻对方[3]
农民起义军进攻对方[1]
隋军进攻对方[4]
农民起义军进攻对方[2]
隋军进攻对方[0]
农民起义军进攻对方[3]
隋军进攻对方[1]
隋军进攻对方[2]
隋军进攻对方[3]
隋军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[4]
隋军进攻对方[1]
农民起义军进攻对方[0]
隋军进攻对方[2]
农民起义军进攻对方[1]
隋军进攻对方[3]
农民起义军进攻对方[2]
隋军进攻对方[4]
农民起义军进攻对方[3]
隋军进攻对方[0]
农民起义军进攻对方[4]
隋军进攻对方[1]
农民起义军进攻对方[0]
隋军进攻对方[2]
农民起义军进攻对方[1]
隋军进攻对方[3]
农民起义军进攻对方[2]
隋军进攻对方[4]
农民起义军进攻对方[3]
隋军进攻对方[0]
农民起义军进攻对方[4]
农民起义军进攻对方[0]
隋军进攻对方[1]
农民起义军进攻对方[1]
隋军进攻对方[2]
农民起义军进攻对方[2]
隋军进攻对方[3]
农民起义军进攻对方[3]
隋军进攻对方[4]
农民起义军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[0]
农民起义军进攻对方[1]
隋军进攻对方[1]
农民起义军进攻对方[2]
隋军进攻对方[2]
农民起义军进攻对方[3]
隋军进攻对方[3]
农民起义军进攻对方[4]
隋军进攻对方[4]
农民起义军进攻对方[0]
隋军进攻对方[0]
农民起义军进攻对方[1]
隋军进攻对方[1]
农民起义军进攻对方[2]
隋军进攻对方[2]
农民起义军进攻对方[3]
隋军进攻对方[3]
农民起义军进攻对方[4]
隋军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[0]
隋军进攻对方[1]
农民起义军进攻对方[1]
隋军进攻对方[2]
农民起义军进攻对方[2]
隋军进攻对方[3]
农民起义军进攻对方[3]
隋军进攻对方[4]
农民起义军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[0]
隋军进攻对方[1]
农民起义军进攻对方[1]
隋军进攻对方[2]
农民起义军进攻对方[2]
隋军进攻对方[3]
农民起义军进攻对方[3]
隋军进攻对方[4]
农民起义军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[0]
隋军进攻对方[1]
农民起义军进攻对方[1]
隋军进攻对方[2]
农民起义军进攻对方[2]
隋军进攻对方[3]
农民起义军进攻对方[3]
隋军进攻对方[4]
农民起义军进攻对方[4]
隋军进攻对方[0]
隋军进攻对方[1]
农民起义军进攻对方[0]
隋军进攻对方[2]
农民起义军进攻对方[1]
隋军进攻对方[3]
农民起义军进攻对方[2]
隋军进攻对方[4]
农民起义军进攻对方[3]
隋军进攻对方[0]
农民起义军进攻对方[4]
隋军进攻对方[1]
农民起义军进攻对方[0]
隋军进攻对方[2]
农民起义军进攻对方[1]
隋军进攻对方[3]
农民起义军进攻对方[2]
隋军进攻对方[4]
农民起义军进攻对方[3]
隋军进攻对方[0]
农民起义军进攻对方[4]
隋军进攻对方[1]
农民起义军进攻对方[0]
隋军进攻对方[2]
农民起义军进攻对方[1]
隋军进攻对方[3]
农民起义军进攻对方[2]
隋军进攻对方[4]
农民起义军进攻对方[3]
隋军进攻对方[0]
农民起义军进攻对方[4]
隋军进攻对方[1]
农民起义军进攻对方[0]
隋军进攻对方[2]
农民起义军进攻对方[1]
隋军进攻对方[3]
农民起义军进攻对方[2]
隋军进攻对方[4]
农民起义军进攻对方[3]
隋军进攻对方[0]
农民起义军进攻对方[4]
隋军进攻对方[1]
农民起义军进攻对方[0]
隋军进攻对方[2]
隋军进攻对方[3]
农民起义军进攻对方[1]
隋军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[2]
隋军进攻对方[1]
农民起义军进攻对方[3]
隋军进攻对方[2]
农民起义军进攻对方[4]
隋军进攻对方[3]
农民起义军进攻对方[0]
隋军进攻对方[4]
农民起义军进攻对方[1]
隋军进攻对方[0]
农民起义军进攻对方[2]
隋军进攻对方[1]
农民起义军进攻对方[3]
隋军进攻对方[2]
农民起义军进攻对方[4]
隋军进攻对方[3]
农民起义军进攻对方[0]
隋军进攻对方[4]
农民起义军进攻对方[1]
隋军进攻对方[0]
农民起义军进攻对方[2]
隋军进攻对方[1]
农民起义军进攻对方[3]
隋军进攻对方[2]
农民起义军进攻对方[4]
隋军进攻对方[3]
农民起义军进攻对方[0]
隋军进攻对方[4]
农民起义军进攻对方[1]
隋军进攻对方[0]
农民起义军进攻对方[2]
隋军进攻对方[1]
农民起义军进攻对方[3]
隋军进攻对方[2]
农民起义军进攻对方[4]
隋军进攻对方[3]
农民起义军进攻对方[0]
隋军进攻对方[4]
农民起义军进攻对方[1]
隋军进攻对方[0]
农民起义军进攻对方[2]
隋军进攻对方[1]
农民起义军进攻对方[3]
隋军进攻对方[2]
农民起义军进攻对方[4]
隋军进攻对方[3]
农民起义军进攻对方[0]
农民起义军进攻对方[1]
隋军进攻对方[4]
农民起义军进攻对方[2]
隋军进攻对方[0]
农民起义军进攻对方[3]
隋军进攻对方[1]
农民起义军进攻对方[4]
隋军进攻对方[2]
农民起义军进攻对方[0]
隋军进攻对方[3]
农民起义军进攻对方[1]
隋军进攻对方[4]
农民起义军进攻对方[2]
隋军进攻对方[0]
农民起义军进攻对方[3]
隋军进攻对方[1]
农民起义军进攻对方[4]
农民起义军进攻对方[0]
隋军进攻对方[2]
农民起义军进攻对方[1]
隋军进攻对方[3]
农民起义军进攻对方[2]
农民起义军进攻对方[3]
隋军进攻对方[4]
农民起义军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[0]
隋军进攻对方[1]
农民起义军进攻对方[1]
隋军进攻对方[2]
农民起义军进攻对方[2]
隋军进攻对方[3]
农民起义军进攻对方[3]
隋军进攻对方[4]
农民起义军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[0]
农民起义军进攻对方[1]
隋军进攻对方[1]
农民起义军进攻对方[2]
隋军进攻对方[2]
农民起义军进攻对方[3]
隋军进攻对方[3]
隋军进攻对方[4]
农民起义军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[0]
隋军进攻对方[1]
农民起义军进攻对方[1]
隋军进攻对方[2]
隋军进攻对方[3]
农民起义军进攻对方[2]
隋军进攻对方[4]
农民起义军进攻对方[3]
隋军进攻对方[0]
农民起义军进攻对方[4]
隋军进攻对方[1]
农民起义军进攻对方[0]
隋军进攻对方[2]
农民起义军进攻对方[1]
隋军进攻对方[3]
农民起义军进攻对方[2]
隋军进攻对方[4]
隋军进攻对方[0]
农民起义军进攻对方[3]
隋军进攻对方[1]
农民起义军进攻对方[4]
隋军进攻对方[2]
农民起义军进攻对方[0]
隋军进攻对方[3]
农民起义军进攻对方[1]
隋军进攻对方[4]
农民起义军进攻对方[2]
隋军进攻对方[0]
农民起义军进攻对方[3]
隋军进攻对方[1]
农民起义军进攻对方[4]
隋军进攻对方[2]
农民起义军进攻对方[0]
隋军进攻对方[3]
农民起义军进攻对方[1]
隋军进攻对方[4]
农民起义军进攻对方[2]
隋军进攻对方[0]
农民起义军进攻对方[3]
隋军进攻对方[1]
农民起义军进攻对方[4]
隋军进攻对方[2]
农民起义军进攻对方[0]
隋军进攻对方[3]
农民起义军进攻对方[1]
隋军进攻对方[4]
农民起义军进攻对方[2]
隋军进攻对方[0]
农民起义军进攻对方[3]
隋军进攻对方[1]
农民起义军进攻对方[4]
隋军进攻对方[2]
农民起义军进攻对方[0]
隋军进攻对方[3]
农民起义军进攻对方[1]
隋军进攻对方[4]
农民起义军进攻对方[2]
隋军进攻对方[0]
农民起义军进攻对方[3]
隋军进攻对方[1]
农民起义军进攻对方[4]
隋军进攻对方[2]
正当双方激战正酣,半路杀出了程咬金。
隋军进攻对方[3]
农民起义军进攻对方[0]
隋军进攻对方[4]
农民起义军进攻对方[1]
隋军进攻对方[0]
农民起义军进攻对方[2]
程咬金的理想是结束战争,使百姓安居乐业!
农民起义军进攻对方[3]
隋军进攻对方[1]
农民起义军进攻对方[4]
隋军进攻对方[2]
农民起义军结束战斗了!
隋军进攻对方[3]
隋军进攻对方[4]
隋军结束战斗了!
程咬金开始了战斗!
程咬金排山倒海,力挽狂澜!
程咬金排山倒海,力挽狂澜!
程咬金排山倒海,力挽狂澜!
程咬金排山倒海,力挽狂澜!
程咬金排山倒海,力挽狂澜!
程咬金结束了战斗!
战争结束,人民安居乐业,程先生实现了自己的理想!
隋唐演义结束,请大家有序退场。
参考视频:慕课网《深入浅出Java多线程》