简单的java多线程源码分享(二)
生活随笔
收集整理的這篇文章主要介紹了
简单的java多线程源码分享(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
/** * 軍隊線程 * 模擬作戰雙方的行為 * @author gent * */ public class ArmyRunnable implements Runnable{//volatile保證了線程可以正確讀取其他線程寫入的值//可見性 ref JMM,happens-before原則volatile boolean keepRunning = true;@Overridepublic void run() {while (keepRunning) {//發動5連擊for(int i=0;i<5;i++){System.out.println(Thread.currentThread().getName()+"進攻對方["+i+"]次");//讓出處理器時間,下次該誰進攻還不一定Thread.yield();}}System.out.println(Thread.currentThread().getName()+"結束了戰斗!");}}/** * 關鍵人物類 * @author gent * */ public class KeyPersonThread extends Thread{public void run(){System.out.println(Thread.currentThread().getName()+"開始了戰斗");for(int i=0;i<10;i++){System.out.println(Thread.currentThread().getName()+"左突右殺,攻擊隋軍");}System.out.println(Thread.currentThread().getName()+"結束了戰斗");} }/** * 隋唐演繹舞臺 * @author gent * */ public class Stage extends Thread {public void run(){System.out.println("歡迎觀看隋唐演義");try {Thread.sleep(5000);} catch (InterruptedException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}ArmyRunnable armyTaskOfDynasty = new ArmyRunnable();ArmyRunnable armyTaskOfRevolt = new ArmyRunnable();//使用Runnable接口創建線程Thread armyOfSuiDynasty = new Thread(armyTaskOfDynasty,"隋軍");Thread armyOfRevolt = new Thread(armyTaskOfRevolt,"農民起義軍");//啟動線程,讓軍隊開始作戰armyOfSuiDynasty.start();armyOfRevolt.start();//舞臺線程休眠,大家專心觀看軍隊廝殺try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("正當雙方激戰正酣,半路殺出個程咬金");Thread mrCheng = new KeyPersonThread();mrCheng.setName("程咬金");System.out.println("程咬金的理想就是結束戰爭,使百姓安居樂業!");//鳴金收兵//停止線程的方法armyTaskOfDynasty.keepRunning=false;armyTaskOfRevolt.keepRunning=false;//不應該使用stop方法停止線程,因為這是一種戛然而止的方式try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}mrCheng.start();try {mrCheng.join();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("戰爭結束,人民安居樂業,程先生實現了人生理想!");System.out.println("演出結束"); // try { // armyOfRevolt.join(); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // }}public static void main(String[] args) {new Stage().start();} }轉載于:https://my.oschina.net/u/3206691/blog/1607199
總結
以上是生活随笔為你收集整理的简单的java多线程源码分享(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Day5 JDBC
- 下一篇: 有外键约束的子表插入数据时出现的错误