什麼是「執行緒」
支援「平行處理」的執行控制機制,它可以執行程式中任何一組相關且可與程式中其它局部「平行處理」的程式片斷。
播放背景音樂
執行緒a:
數數運算
執行緒c:
動畫顯示
執行緒b:
程式(多執行緒)
Java語言實務
3
「執行緒」具有以下幾個根本特徵:
不是完整的程式。
隸屬於同一個程式的「執行緒」必需共享系統分配給所屬主程式的資源〔如記憶體空間、CPU時間等〕。
每一個「執行緒」都有自己的「執行堆疊」及「程式計數器」
程式可以設定「執行緒」的執行優先順序 及隸屬的「執行緒群組」。
每個「執行緒」於程式執行時的可能狀態有:born、ready、running、blocked、suspend、sleeping、waiting及dead。
Java語言實務
4
各作業系統對於具有相同優先權的「執行緒」有不同的處理方式 。
Java Runtime〔Java虛擬機器〕會於開始執行程式前,自動為程式建立一個「執行緒」以便控制及記錄程式執行時的狀態,這個「執行緒」通稱為main thread,當main thread結束時〔也就是說進入dead狀態時〕,程式的執行也就結束。
Java語言實務
5
執行緒的程式架構
在Java程式中,「執行緒」是以「執行緒」物件來表示,亦即在程式中一個「執行緒」物件就代表了一個「執行緒」
二種指定程式中局部的程式碼給「執行緒」物件 以便執行的方式
在程式中建立Thread類別的子類別,然後直接在子類別中改寫繼承自Thread類別的run() 方法
在程式中定義界面Runnable,然後改寫Runnable的run() 方法
Java語言實務
6
程式 Ex11_1 以Thread的子類別建立執行緒(1/2)
import .*;
import .*;
/* 建立Thread的子類別 */
class Counter_Thread extends Thread
{ private static int threadNum=0; /* 類別變數threadNum用來累計執行緒個數 */
private int currentThread, loopLimit;
public Counter_Thread(int loopLimit) /* 變數loopLimit為計數值的上限 */
{ = loopLimit;
currentThread = threadNum++;
}
private void pause(double seconds) /* 讓執行緒進入睡眠狀態 */
{ try {((*seconds));}
catch(InterruptedException ie) {};
}
public void run() /* 執行緒的執行由此開始 */
{ for(int i=0; i<loopLimit; i++)
{ ("Thread " + currentThread + ": counter=" + i);
pause(()); } // end for
}
} // end of Counter
Java語言實務
7
程式 Ex11_1 以Thread的子類別建立執行緒(2/2)
/* 測試執行緒 */
public class Counter
{
public static void main(String[] args)
{ /* 建立執行緒物件 */
Counter_Thread counterThread_1 = new Counter_Thread(8);
Counter_Thread counterThread_2 = new Counter_Thread(8);
(); /* 啟動執行緒 */
();
} // end main
} // end Counter
Java語言實務
8
程式 Ex11_1 可能的執行結果:
Thread 0: counter=0
Thread 1: counter=0
Thread 0: counter=1
Thread 1: counter=1
Thread 1: cou
JAVA语言实务ppt课件 来自淘豆网m.daumloan.com转载请标明出处.