1. 程式人生 > >Java一個多執行緒的經典例子

Java一個多執行緒的經典例子

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