Java一個多執行緒的經典例子
阿新 • • 發佈:2019-02-07
import java.io.*; //多執行緒程式設計 public class MultiThread { public static void main(String args[]) { System.out.println("我是主執行緒!"); //下面建立執行緒例項thread1 ThreadUseExtends thread1 = new ThreadUseExtends(); //建立thread2時以實現了Runnable介面的THhreadUseRunnable類例項為引數 Thread thread2 = new Thread(new ThreadUseRunnable(), "SecondThread"); thread1.start(); //啟動執行緒thread1使之處於就緒狀態 //thread1.setPriority(6);//設定thread1的優先順序為6 //優先順序將決定cpu空出時,處於就緒狀態的執行緒誰先佔領cpu開始執行 //優先順序範圍1到10,MIN_PRIORITY,MAX_PRIORITY,NORM_PAIORITY //新執行緒繼承建立她的父執行緒優先順序,父執行緒通常有普通優先順序即5NORM_PRIORITY System.out.println("主執行緒將掛起7秒!"); try { Thread.sleep(7000); //主執行緒掛起7秒 } catch (InterruptedException e) { return; } System.out.println("又回到了主執行緒!"); if (thread1.isAlive()) { thread1.stop(); //如果thread1還存在則殺掉他 System.out.println("thread1休眠過長,主執行緒殺掉了thread1!"); } else System.out.println("主執行緒沒發現thread1,thread1已醒順序執行結束了!"); thread2.start(); //啟動thread2 System.out.println("主執行緒又將掛起7秒!"); try { Thread.sleep(7000); //主執行緒掛起7秒 } catch (InterruptedException e) { return; } System.out.println("又回到了主執行緒!"); if (thread2.isAlive()) { thread2.stop(); //如果thread2還存在則殺掉他 System.out.println("thread2休眠過長,主執行緒殺掉了thread2!"); } else System.out.println("主執行緒沒發現thread2,thread2已醒順序執行結束了!"); System.out.println("程式結束按任意鍵繼續!"); try { System.in.read(); } catch (IOException e) { System.out.println(e.toString()); } } //main } //MultiThread class ThreadUseExtends extends Thread //通過繼承Thread類,並實現它的抽象方法run() //適當時候建立這一Thread子類的例項來實現多執行緒機制 //一個執行緒啟動後(也即進入就緒狀態)一旦獲得CPU將自動呼叫它的run()方法 { ThreadUseExtends() {} //建構函式 public void run() { System.out.println("我是Thread子類的執行緒例項!"); System.out.println("我將掛起10秒!"); System.out.println("回到主執行緒,請稍等,剛才主執行緒掛起可能還沒醒過來!"); try { sleep(10000); //掛起5秒 } catch (InterruptedException e) { return; } //如果該run()方法順序執行完了,執行緒將自動結束,而不會被主執行緒殺掉 //但如果休眠時間過長,則執行緒還存活,可能被stop()殺掉 } } class ThreadUseRunnable implements Runnable //通過實現Runnable介面中的run()方法,再以這個實現了run()方法的類 //為引數建立Thread的執行緒例項 { //Thread thread2=new Thread(this); //以這個實現了Runnable介面中run()方法的類為引數建立Thread類的執行緒例項 ThreadUseRunnable() {} //建構函式 public void run() { System.out.println("我是Thread類的執行緒例項並以實現了Runnable介面的類為引數!"); System.out.println("我將掛起1秒!"); System.out.println("回到主執行緒,請稍等 jn0-120 e20-040 ,剛才主執行緒掛起可能還沒醒過來!"); try { Thread.sleep(1000); //掛起5秒 } catch (InterruptedException e) { return; } //如果該run()方法順序執行完了,執行緒將自動結束,而不會被主執行緒殺掉 //但如果休眠時間過長,則執行緒還存活,可能被stop()殺掉 } } //該程式可做的修改如改休眠時間或優先順序setPriority()
http://www.blogjava.net/java2java/archive/2007/09/19/146382.html