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("Thread1線程開始!");
System.out.println("Thread1線程掛起10秒!");
try {
sleep(10000);// 掛起10秒
} catch (InterruptedException e) {
return;
}
System.out.println("Thread1回到主線程,請稍等,剛才主線程掛起可能還沒醒過來!");
// 如果該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("Thread2線程開始");
System.out.println("Thread2線程掛起1秒!");
try {
Thread.sleep(1000);// 掛起1秒
} catch (InterruptedException e) {
return;
}
System.out.println("Thread2回到主線程,請稍等 ,剛才主線程掛起可能還沒醒過來!");
// 如果該run()方法順序執行完了,線程將自動結束,而不會被主線程殺掉
// 但如果休眠時間過長,則線程還存活,可能被stop()殺掉
}
}
//該程式可做的修改如改休眠時間或優先順序setPriority()