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