Java中的多線程——通過示例學習
已發表: 2022-06-23Java 是一種支持多線程程序的編程語言。 多線程程序容納兩個或多個同時運行的部分(線程),處理不同的任務,實現最佳的 CPU 使用率。 多線程是多任務的擴展。 多任務可以定義為多個進程共享一個公共處理資源(如中央處理單元)的特性。
多線程將多任務的概念擴展到各種應用程序,在這些應用程序中,定義的操作可以分解為更小的單個線程。
這些線程中的每一個都以不同的執行路徑同時且獨立地運行,這樣一個線程中的異常不會影響其他線程的性能。
從世界頂級大學在線學習軟件開發課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
Java中的多線程是什麼?
Java中的多線程是同時執行多個線程以最大化CPU時間的地方。
線程的生命週期
線程在其生命週期中有不同的階段。 它們如下:
- 新:線程作為新線程開始其生命週期。 它一直處於這個新生階段,直到程序運行該線程。
- 可運行:當程序啟動時,天生線程進入可運行階段。 線程在這個階段開始執行它的任務。
- 等待:這是一個線程等待另一個線程完成其任務的過渡階段。 處於等待階段的線程在收到其他線程的信號後切換到可運行階段。
- 定時等待:這是一個可運行線程可以進入特定時間間隔的階段。 此階段中的線程在特定時間間隔結束時移回可運行階段。
- Dead:這是線程生命週期的最後階段。 線程在完成其任務後進入此階段。
Java中多線程的好處
- 由於Java中的線程是獨立的,Java多線程不會阻塞用戶,它們可以同時執行許多操作。
- 由於 Java 中的多線程支持多個操作,因此它既省時又高效。
- 程序即使有一部分被截獲也可以繼續運行。
- 與使用多個進程的傳統並行程序相比,它提高了性能。
- 創建可充分利用 CPU 時間的高效程序。
- 大大提高了複雜應用程序的響應時間。
- 與傳統的並行程序相比,需要更少的資源。
線程優先順序
操作系統根據線程的優先級確定線程的執行計劃。 線程的優先級是根據其常量的值確定的。
- 常量 1 獲得最低優先級 (MIN_PRIORITY)
- 常量 5 獲得正常優先級 (NORM_PRIORITY)
- 常數 10 獲得最大優先級 (MAX_PRIORITY)
軟件工程的熱門課程和文章
熱門節目 | |||
軟件開發執行 PG 計劃 - IIIT B | 區塊鏈證書課程 - PURDUE | 網絡安全證書計劃 - PURDUE | 計算機科學理學碩士 - IIIT B |
其他熱門文章 | |||
2021-22年美國雲工程師薪水 | 美國 AWS 解決方案架構師薪水 | 美國後端開發人員工資 | 美國前端開發人員薪水 |
美國網絡開發人員的薪水 | 2022 年 Scrum Master 面試問題 | 如何在 2022 年開始網絡安全職業? | 工程專業學生在美國的職業選擇 |
如何在 Java 中創建線程?
在 Java 中可以通過兩種方式創建線程:
- 擴展線程類
- 實現一個可運行的接口
通過擴展線程類創建線程
下面給出線程類的一些方法及其功能。
- getName() :用於獲取線程的名稱
- getPriority():獲取線程的優先級
- is Alive():查找線程是否正在運行
- join():等待線程終止
- run() : 線程入口點
- sleep():用於將線程掛起特定時間窗口。
- start() :通過其 run() 方法激活線程。
第 1 步:覆蓋線程類中給出的 run() 方法。 這作為線程的入口點,整個程序邏輯應該封裝在 4this 中。
run() 方法的語法如下:
公共無效運行()
第二步:通過start()方法啟動線程對象,語法為void start() 。
以下是 Java 中的多線程程序示例:
示例 1:
類 MultithreadingDemo 擴展 Thread{
公共無效運行(){
System.out.println(“我的線程正在運行。”);
}
公共靜態無效主要(字符串參數[]){
MultithreadingDemo obj=new MultithreadingDemo();
obj.start();
}
}
上述程序的輸出將是:
我的線程正在運行。
示例 2:
類計數擴展線程
{
數數()
{
super(“我的線程正在擴展”);
System.out.println(“我的線程已創建” + this);
開始();
}
公共無效運行()
{
嘗試
{
對於 (int i=0 ;i<10;i++)
{
System.out.println(“打印計數” + i);
線程.sleep(1000);
}
}
捕捉(中斷異常 e)
{
System.out.println(“我的線程被中斷了”);
}
System.out.println(“我的線程結束了”);
}
}
類擴展示例
{
公共靜態無效主(字符串參數 [])
{
計數cnt =新計數();
嘗試
{
而(cnt.isAlive())
{
System.out.println(“主線程將一直存活到子線程存活”);
線程.sleep(1500);
}
}
捕捉(中斷異常 e)
{
System.out.println(“主線程被中斷”);
}
System.out.println(“主線程運行終止”);
}
}
上述程序的輸出將是
我的線程是 createdThread[my runnable thread,5,main]
主線程將一直存在,直到子線程存在
打印計數 0
打印計數 1
主線程將一直存在,直到子線程存在
打印計數 2
主線程將一直存在,直到子線程存在
打印計數 3
打印計數 4
主線程將一直存在,直到子線程存在
打印計數 5
主線程將一直存在,直到子線程存在
打印計數 6
打印計數 7
主線程將一直存在,直到子線程存在
打印計數 8
主線程將一直存在,直到子線程存在
打印計數 9
我的線程運行已終止
主線程運行終止
通過實現可運行接口創建線程
使用此方法時需要遵循三個重要步驟。
第 1 步:run() 方法應由可運行接口實現。 這個 run() 方法作為線程的入口點,應該包含整個程序邏輯。
run() 方法的語法是
公共無效運行()
第 2 步:應使用下面給出的構造函數激活線程對象。
線程(可運行線程對象,字符串線程名稱);
這裡threadObj作為實現runnable接口的類,thread name是給新線程的名字。
第三步:創建線程對像後,可以通過執行run()方法的start()方法來發起。
start() 方法的語法如下。
無效開始();
可以在此處找到通過實現可運行接口來創建線程的示例。
要了解有關 Java 多線程和軟件開發的更多信息,我們建議註冊IIIT Bangalore 與 upGrad 聯合提供的軟件開發高級研究生課程。
軟件開發執行 PG 計劃是一個為期 13 個月的在線計劃,旨在幫助在職專業人士通過與行業相關的案例研究和項目在他們的職業生涯中實現巨大飛躍。 該計劃還包括十多場來自行業專家的現場會議,以幫助候選人更好地學習。
該計劃包括行業項目,以幫助候選人獲得實踐經驗和足夠的行業接觸,以使他們的學習具有相關性和實用性。 該計劃的完成將獎勵具有夢寐以求的 IIIT B 認證和校友身份的候選人。
該計劃提供來自 upGrad 的 360 度安置支持,影響了來自世界各地的 40,000 多名付費學習者,使事情變得更好。 upGrad 擁有來自超過 85 個國家/地區的學習者基礎,為候選人提供了建立全球同行網絡的寶貴機會。
Java中的多任務和多線程有什麼區別?
多任務是可以同時執行許多任務的過程,多線程是同時執行多個線程的過程,每個線程執行不同的任務。
Java是否支持多重繼承?
Java 編程語言支持多重繼承,即一個類實現多個接口的過程。 一個類在接口中可以有不同的方法實現(默認或靜態)。 與 C++ 語言不同,Java 中的多重繼承只能使用接口而不是類來實現。
多線程可以提高Java的性能嗎?
多線程通過允許多個 CPU 處理同一個問題來提高 Java 的性能。 這不僅加快了流程,還有助於有效地解決問題。