標籤:[] 理想 for interrupt set 戰鬥 ati get cep
1 package com.imooc.base; 2 3 public class Stage extends Thread { 4 5 public static void main(String[] args) { 6 new Stage().run(); 7 } 8 public void run(){ 9 10 System.out.println("歡迎觀看隋唐演義!");11 12 try {13 Thread.sleep(10000);14 } catch (InterruptedException e1) {15 e1.printStackTrace();16 }17 18 System.out.println("大幕徐徐拉開");19 20 ArmyRunnable armyTaskOfSuiDynasty = new ArmyRunnable();21 ArmyRunnable armyTaskOfRevolt = new ArmyRunnable();22 23 Thread armyOfSuiDynasty = new Thread(armyTaskOfSuiDynasty,"隋軍");24 Thread armyOfRevolt = new Thread(armyTaskOfRevolt,"農民起義軍");25 26 armyOfSuiDynasty.start();27 armyOfRevolt.start();28 29 try {30 Thread.sleep(50);31 } catch (InterruptedException e) {32 e.printStackTrace();33 }34 35 armyTaskOfSuiDynasty.keepRunning = false;36 armyTaskOfRevolt.keepRunning = false;37 38 try {39 armyOfRevolt.join();40 } catch (InterruptedException e) {41 e.printStackTrace();42 }43 44 System.out.println("正當雙方激戰正酣,半路殺出了個程咬金");45 46 Thread mrCheng = new KeyPersonThread();47 mrCheng.setName("程咬金");48 49 System.out.println("程咬金的理想就是結束戰爭,使百姓安居樂業!");50 51 armyTaskOfSuiDynasty.keepRunning = false;52 armyTaskOfRevolt.keepRunning = false; 53 54 try {55 Thread.sleep(2000);56 } catch (InterruptedException e) {57 e.printStackTrace();58 }59 60 mrCheng.start();61 62 try {63 mrCheng.join();64 } catch (InterruptedException e) {65 e.printStackTrace();66 }67 68 System.out.println("戰爭結束,人民安居樂業,程先生實現了自己的人生夢想!");69 System.out.println("謝謝觀看");70 }71 }
1 package com.imooc.base; 2 3 public class KeyPersonThread extends Thread { 4 public void run(){ 5 System.out.println(Thread.currentThread().getName()+"開始了戰鬥!"); 6 7 for(int i=0;i<10;i++){ 8 System.out.println(Thread.currentThread().getName()+"左突右殺,攻擊隋軍。。。"); 9 }10 11 System.out.println(Thread.currentThread().getName()+"結束了戰鬥!");12 }13 }
1 package com.imooc.base; 2 3 public class ArmyRunnable implements Runnable { 4 //volatile保證了線程可以正確的讀取其他線程寫入的值 5 //可見度 參考JMM,happens-before原則 6 volatile boolean keepRunning = true; 7 8 public void run() { 9 while(keepRunning){10 for(int i=0;i<5;i++){11 System.out.println(Thread.currentThread().getName()+"進攻方{"+ i +"}");12 13 Thread.yield();14 }15 16 }17 System.out.println(Thread.currentThread().getName()+"結束了戰鬥!");18 }19 20 }
java 多線程 2