是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共 享進程所擁有的全部資源。一個線程可以創建和撤消另一個線程,同一進程中的多個線程之間可以并發執行。由于線程之間的相互制約,致使線程在運行中呈現出間 斷性。線程也有就緒、阻塞和運行三種基本狀態。 線程是程序中一個單一的順序控制流程.在單個程序中同時運行多個線程完成不同的工作,稱為多線程. 線程和進程的區別在于,子進程和父進程有不同的代碼和數據空間,而多個線程則共享數據空間,每個線程有自己的執行堆棧和程序計數器為其執行上下文.多線程主要是為了節約CPU時間,發揮利用,根據具體情況而定. 線程的運行中需要使用計算機的內存資源和CPU 線程的周期 新建 就緒 運行 阻塞 死亡 線程調度與優先級 有線程進入了就緒狀態,需要有線程調度程序來決定何時執行,根據優先級來調度. 線程組 每個線程都是一個線程組的一個成員,線程組把多個線程集成一個對象,通過線程組可以同時對其中的多個線程進行操作.在生成線程時必須將線程放在指定的線程組,也可以放在缺省的線程組中,缺省的就是生成該線程的線程所在的線程組.一旦一個線程加入了某個線程組,不能被移出這個組. 守護線程 是特殊的線程,一般用于在后臺為其他線程提供服務. isDaemon():判斷一個線程是否為守護線程. set Daemon():設置一個線程為守護線程. Thread類和Runnable接口 Thread類 類Thread在包java.lang中定義,它的構造方法如下: public Thread(); public Thread(Runnable target); public Thread(Runnable target,String name); public Thread(String name); public Thread(ThreadGroup group,Runnable target); public Thread(ThreadGroup group, String name); 主要方法 isActive() 判斷是否處于執行狀態 Suspend() 暫停執行 reSume 恢復執行 start() 開始執行 Stop() 停止執行 sleep() 睡眠 run() 程序體 yield() 向其他線程退讓運行權 線程優先級 Public statuc final int MAX_PRIORITY最高優先級,10 Public statuc final int MIN_PRIORITY最低優先級,1 Public statuc final int NORM_PRIORITY普通優先級,5 Runnable接口 Runnable接口中只定義了一個方法run()作為線程體, void run() Java的線程是通過java.lang.Thread類來實現的。 VM啟動時會有一個由主方法(public static void main(){})所定義的線程。 可以通過創建Thread的實例來創建新的線程。 每個線程都是通過某個特定的Thread對象所對應的方法run()來完成其操作的,方法run()稱為線程體。 通過調用Thread類的start()方法來啟動一個線程 Java里面實現多線程,有2個方法 1 繼承 Thread類,比如 class MyThread extends Thread { public void run() { // 這里寫上線程的內容 } public static void main(String[] args) { // 使用這個方法啟動一個線程 new MyThread().start(); } } 2 實現 Runnable接口 class MyThread implements Runnable{ public void run() { // 這里寫上線程的內容 } public static void main(String[] args) { // 使用這個方法啟動一個線程 new Thread(new MyThread()).start(); } } 一般鼓勵使用第二種方法,應為Java里面只允許單一繼承,但允許實現多個接口。第二個方法更加靈活。
新聞熱點
疑難解答