您好,登錄后才能下訂單哦!
本篇文章為大家展示了Java中如何新建線程,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
一 點睛
當線程被創(chuàng)建啟動以后,它既不是一啟動就進入執(zhí)行狀態(tài),也不是一直處于執(zhí)行狀態(tài),在線程的生命周期中,它要經(jīng)過新建、就緒、運行、阻塞和死亡5種狀態(tài)。當線程啟動后,它不可能一直霸占CPU獨自運行,所以CPU需要在多個線程之間切換,于是線程狀態(tài)也會多次在運行和就緒之間切換。
當程序使用new關鍵字創(chuàng)建一個線程后,該線程就處于新建狀態(tài)。
當線程對象調(diào)用start()方法之后,該線程就處于就緒狀態(tài),處于這個狀態(tài)的線程并沒有開始運行,只是表示該線程可以運行了。至于該線程何時開始運行,取決于JVM里線程調(diào)度器的調(diào)度。
自動線程使用start()方法,而不是run()方法,永遠不要調(diào)用線程對象的run()方法。否則系統(tǒng)把線程對象當作一個普通對象,而run()方法也是一個普通方法,而不是線程執(zhí)行體。
二 代碼
public class InvokeRun extends Thread { private int i ; // 重寫run方法,run方法的方法體就是線程執(zhí)行體 public void run() { for ( ; i < 100 ; i++ ) { // 直接調(diào)用run方法時,Thread的this.getName返回的是該對象名字, // 而不是當前線程的名字。 // 使用Thread.currentThread().getName()總是獲取當前線程名字 System.out.println(Thread.currentThread().getName() + " " + i); // ① } } public static void main(String[] args) { for (int i = 0; i < 100; i++) { // 調(diào)用Thread的currentThread方法獲取當前線程 System.out.println(Thread.currentThread().getName() + " " + i); if (i == 20) { // 直接調(diào)用線程對象的run方法, // 系統(tǒng)會把線程對象當成普通對象,run方法當成普通方法, // 所以下面兩行代碼并不會啟動兩條線程,而是依次執(zhí)行兩個run方法 new InvokeRun().run(); new InvokeRun().run(); } } } }
三 運行
......
main 93
main 94
main 95
main 96
main 97
main 98
main 99
main 0
main 1
main 2
main 3
main 4
main 5
......
上述內(nèi)容就是Java中如何新建線程,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。