標籤:
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 }//MultiThreadclass 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()殺掉 }} //該程式可做的修改如改休眠時間或優先順序setPriorit
java 多線程的理解 黑馬程式員