更新時間:2020-11-24 17:27:25 來源:動力節點 瀏覽2266次
在Java多線程中,有許多的方法存在,以便實現線程的各種功能。這其中包含有靜態方法以及一些對象方法,本文就為學習多線程的小伙伴介紹10種線程中的常用方法,為我們學習多線程中方法的使用打下基礎。
下面就是線程中常用的10種方法:
1.start():
在使用 new 關鍵字創建一個線程后(New 狀態),并不表現出任何的線程活動狀態(非 New、Terminated 狀態,可以使用 isAlive 方法檢測線程的活動狀態),CPU 也不會執行線程中的代碼。
只有在 start() 方法執行后,才表示這個線程可運行了(Runnable 狀態),至于何時真正運行還要看線程調度器的調度。
在線程死亡后,不要再次調用 start() 方法。只能對新建狀態的線程調用且只能調用一次 start() 方法,否則將拋出 IllegalThreadStateException 異常。
2.join():
在很多情況下,主線程創建并啟動了線程,如果子線程中藥進行大量耗時運算,主線程往往將早于子線程結束之前結束。這時,如果主線程想等待子線程執行完成之后再結束,比如子線程處理一個數據,主線程要取得這個數據中的值,就要用到join()方法了。方法join()的作用是等待線程對象銷毀。
3.run():
啟動線程是 start() 方法,而不是 run() 方法。run()方法是不需要用戶來調用的,當通過start方法啟動一個線程之后,當線程獲得了CPU執行時間,便進入run方法體去執行具體的任務。注意,繼承Thread類必須重寫run方法,在run方法中定義具體要執行的任務。
4.sleep():
主動放棄占用的處理器資源,該線程進入阻塞狀態(Blocked 狀態),指定的睡眠時間超時后,線程進入就緒狀態(Runnable),等待線程調度器的調用。
5.yield():
主動放棄占用的處理器資源,線程直接進入就緒狀態(Runnable),等待線程調度器的調用。
可能的情況是當線程使用 yield 方法放棄執行后,線程調度器又將該線程調度執行。
6.interrupt():
沒有任何強制線程終止的方法,這個方法只是請求線程終止,而實際上線程并不一定會終止,在調用 sleep() 方法時可能會出現 InterruptedException 異常,你可能會想在異常捕獲后(try-catch語句中的catch)請求線程終止,而更好的選擇是不處理這個異常,拋給調用者處理,所以這個方法并沒有實際的用途,還有 isInterrupted() 方法檢查線程是否被中斷。
7.setDaemon():
設置守護進程,該方法必須在 start() 方法之前調用,判斷一個線程是不是守護線程,可以使用 isDaemon() 方法判斷。
8.setPriority():
設置線程的優先級,理論上來說,線程優先級高的線程更容易被執行,但也要結合具體的系統。
每個線程默認的優先級和父線程(如 main 線程、普通優先級)的優先級相同,線程優先級區間為 1~10,三個靜態變量:MIN_PRIORITY = 1、NORM_PRIORITY = 5、MAX_PRIORITY = 10。
使用 getPriority() 方法可以查看線程的優先級。
9.isAlive():
檢查線程是否處于活動狀態,如果線程處于就緒、運行、阻塞狀態,方法返回 true,如果線程處于新建和死亡狀態,方法返回 false。
10.getId()
getId()的作用是取得線程的唯一標識
public class Test {
public static void main(String[] args) {
Thread t= Thread.currentThread();
System.out.println(t.getName()+" "+t.getId());
}
}
//main 1
以上就是線程中的常用10種方法,倘若你是初入Java的入門學習者,可能還需要更加細致的講解,配合本站的Java多線程教程里面的各種方法實例一起學習效果更佳哦!
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習