-
join()方法。等待該線程結束后,當前進程才能繼續執行。 比如,只有當某一線程執行完,才能執行另一個線程的后續任務。查看全部
-
volatile 修飾變量可以保證了線程可以正確的讀取其它線程寫入的值。 happens-before原則。查看全部
-
兩種方法實現線程: 1、繼承 Thread 類 class MyThread extends Thread{}; Thread myThread = new MyThread(); myThread.start(); 2、實現Runnable類 class MyRunnable implements Runnable{} Thread myRunnable = new Thread(new MyRunnable); myRunnable.start();查看全部
-
java線程基于的類 Thread, 接口 runable, 常用的方法 public void run();查看全部
-
進程: 程序(任務)的執行過程 動態性 持有資源(共享內存,共享文件)和線程 載體 線程: 是系統中最小的執行單元(是操作系統能夠進行運算調度的最小單位) 同一進程中有多個線程 線程共享進程的資源 交互: 互斥, 同步 一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發多個線程,每條線程并行執行不同的任務。查看全部
-
四.keypersonThread.java 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()+"結束了戰斗!"); } } 五.join()方法使除了mrcheng線程繼續,其他線程停止 System.out.println("正當雙方激戰正酣,半路殺出了個程咬金"); Thread mrCheng = new KeyPersonThread(); mrCheng.setName("程咬金"); System.out.println("程咬金的理想就是結束戰爭,使百姓安居樂業!"); armyTaskOfSuiDynasty.keepRunning = false; armyTaskOfRevolt.keepRunning = false; try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } /* * 歷史大戲留給關鍵人物 */ mrCheng.start(); //萬眾矚目,所有線程等待程先生完成歷史使命 try { mrCheng.join();//join方法使除了mrcheng線程繼續,其他線程停止 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("戰爭結束,人民安居樂業,程先生實現了積極的人生夢想,為人民作出了貢獻!"); System.out.println("謝謝觀看隋唐演義,再見!"); }查看全部
-
二.stage.java /** * 隋唐演義大戲舞臺 */ public class Stage extends Thread { public void run(){ ArmyRunnable armyTaskOfSuiDynasty = new ArmyRunnable(); ArmyRunnable armyTaskOfRevolt = new ArmyRunnable(); //使用Runnable接口創建線程 Thread armyOfSuiDynasty = new Thread(armyTaskOfSuiDynasty,"隋軍"); Thread armyOfRevolt = new Thread(armyTaskOfRevolt,"農民起義軍"); //啟動線程,讓軍隊開始作戰 armyOfSuiDynasty.start(); armyOfRevolt.start(); //舞臺線程休眠,大家專心觀看軍隊廝殺 try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } //停止軍隊作戰 //停止線程的方法 armyTaskOfSuiDynasty.keepRunning = false; armyTaskOfRevolt.keepRunning = false; }查看全部
-
一、ArmyRunnable.java volatile boolean keepRunning = true; //volatile保證了線程可以正確的讀取其他線程寫入的值 //可見性 ref JMM, happens-before原則 -------------------------------------------------------------------------------------------- //軍隊線程 //模擬作戰雙方的行為 public class ArmyRunnable implements Runnable { //volatile保證了線程可以正確的讀取其他線程寫入的值 //可見性 ref JMM, happens-before原則 volatile boolean keepRunning = true; @Override public 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()+"結束了戰斗!"); } }查看全部
-
CPU一次只能處理一個線程,所以兩個線程交替進行查看全部
-
三.actress線程 class Actress implements Runnable{ @Override public void run() { System.out.println(Thread.currentThread().getName()+"是一個演員!"); int count = 0; boolean keepRunning = true; while(keepRunning){ System.out.println(Thread.currentThread().getName()+"登臺演出:"+ (++count)); if(count == 100){ keepRunning = false; } if(count%10== 0){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } System.out.println(Thread.currentThread().getName()+"的演出結束了!"); }查看全部
-
二.線程的休眠 public void run(){ //getname用來獲取當前線程的名稱 System.out.println(getName()+"是一個演員!"); int count = 0;//記錄線程出現的次數 boolean keepRunning = true; while(keepRunning){ System.out.println(getName()+"登臺演出:"+ (++count)); if(count == 100){ keepRunning = false; } if(count%10== 0){ try { Thread.sleep(1000);//休眠1s } catch (InterruptedException e) { e.printStackTrace(); } } } System.out.println(getName()+"的演出結束了!"); }查看全部
-
public class Actor extends Thread { public void run(){ //getname用來獲取當前線程的名稱 System.out.println(getName()+"是一個演員!"); int count = 0;//記錄線程出現的次數 boolean keepRunning = true; System.out.println(getName()+"登臺演出:"+ (++count)); public static void main(String[] args){ Thread actor = new Actor(); actor.setName("Mr. Thread"); actor.start(); } }查看全部
-
總結框架查看全部
-
故事舞臺的線程查看全部
-
關鍵人物的線程查看全部
舉報
0/150
提交
取消