如何在 Java 中創建線程? | Java中的多線程
已發表: 2020-12-29在本文中,我們將了解 Java 中的線程並探索使線程成為可能的機制。
目錄
Java中的線程
Java 中的線程特性是一個輕量級的子進程。 它被認為是最小的處理單元。 它是在程序中實現多任務處理的一種手段。 當涉及到遊戲、動畫等時,它是一個有用的功能。
Java 具有對創建線程和多線程的內置支持。 這是一種通過優化 CPU 空間利用率來最大限度地減少低效率和拖累的巧妙方法。 在 Java 中,這可以通過兩種方式完成:
- 擴展線程類,或
- 實現可運行接口
當多個線程同時執行時,稱為多線程。 這實質上允許程序的多個部分同時運行,線程的每個部分和每個線程都遵循不同的執行路徑。
線程利用共享內存空間; 內存沒有分配給每個部分,導致CPU使用率最大化。 此外,更改上下文不會佔用太多時間。 但是,過多的線程可能會使您的 CPU 參與上下文切換,並且您的執行可能會延遲。
線程可以存在以下六種狀態之一
- NEW——一旦創建了一個線程,它就以新的狀態存在。 它本質上意味著線程尚未開始執行。
- RUNNING – 當一個線程正在執行或排隊執行時,它處於運行狀態。
- WAITING - 一個正在運行的線程有時會被暫停或暫停,以允許另一個活動發生。 wait() 或 join() 的非超時版本可以暫停線程執行。 一旦動作發生,暫停的線程就會恢復。
- TIMED-WAITING – 運行中的線程有時會暫時停止或暫停特定的持續時間。 例如,當調用 sleep() 函數時。
- BLOCKED – 當掛起的 Java 線程無法獲取特定資源時,它會被阻塞並以阻塞狀態存在。
- TERMINATED – 當線程完成執行時,它處於終止狀態。 但是,您可以隨時終止線程。
了解有關 Java 架構和組件的更多信息。

在 Java 中創建線程的好處
創建線程有幾個優點。 其中一些是
- 由於線程是獨立的,即使它們在共享內存空間上運行,一次執行也不會影響另一次執行。 這也意味著您可以同時執行多個操作。
- 線程是多任務處理的一種形式,可以節省時間。
- 一個線程中的錯誤不會影響另一個線程。
如何在 Java 中創建線程?
如上所述,有兩種方法可以做到這一點:擴展線程類或實現可運行接口
線程類
Thread 類中有構造函數和方法,允許您執行操作、管理和跟踪線程。 它擴展了 Object 類,然後實現了伴隨的 Runnable 接口。 線程類中存在的構造函數是:Thread()、Thread(String name)、Thread(Runnable r) 和 Thread(Runnable r, String name)。
以下是方法及其說明
| 方法 | 是用來做什麼的? |
| 開始() | 開始執行 |
| 跑步() | 為線程運行操作 |
| 睡覺() | 讓線程休眠給定的持續時間 |
| 加入() | 等到另一個線程終止 |
| 獲得優先權() | 表示給定線程的優先級 |
| 設置優先級() | 更改給定線程的優先級 |
| 獲取名稱() | 返回指定線程的名稱 |
| 設置名稱() | 更改指定線程的名稱 |
| 獲取標識() | 返回給定線程的 ID |
| 活著() | 測試線程是否仍然存在於任何狀態 |
| 屈服() | 暫停線程對象執行以允許另一個線程運行 |
| 暫停() | 掛起給定的線程 |
| 恢復() | 從掛起狀態恢復線程 |
| 停止() | 停止給定線程 |
| 破壞() | 銷毀線程組和子組 |
| 打斷() | 導致線程執行中斷 |
| 被中斷() | 測試給定的線程執行是否被中斷 |
| 中斷() | 測試當前線程執行是否中斷 |
| 活動計數() | 返迴線程組中活動線程的數量 |
| 持有鎖() | 當且僅噹噹前線程持有指定對像上的監視器鎖時,它才返回 true。 |
| 獲取狀態() | 確定給定線程的狀態 |
| setContextClassLoader() | 設置上下文 ClassLoader |
| getContextClassLoader() | 返回上下文 ClassLoader |
為了通過擴展 Thread 類來創建線程,首先必須創建一個擴展 java.lang.Thread 類的類。 定義此類以覆蓋 run() 方法。 接下來,通過調用 start() 方法在新類中創建一個對像以開始線程執行。

必讀:你應該檢查的 Java 模式程序
可運行接口
這是創建線程的最簡單方法。 實現 Runnable 接口只需要一種方法:run()
為了聲明它,我們寫
公共無效運行()

在 run() 中,我們繼續編寫代碼來創建一個新線程。
報名參加世界頂尖大學的軟件工程課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
線程類與可運行接口
Thread 類阻止您擴展任何其他類。 這是因為在 Java 中無法實現多重繼承。 但是,當我們實現 Runnable 接口時,情況並非如此,您可以繼續擴展其他類。
擴展 Thread 類使您可以訪問幾個重要的方法,從而增強線程的功能。 例如,yield()、stop()、isalive()、interrupt()。 Runnable 接口只有一個相當有限的方法。
包起來
如果您有興趣了解有關 Java 全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為工作專業人士設計,提供 500 多個小時的嚴格培訓,9+項目和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。

