如何在 Java 中創建線程? | Java中的多線程

已發表: 2020-12-29

在本文中,我們將了解 Java 中的線程並探索使線程成為可能的機制。

目錄

Java中的線程

Java 中的線程特性是一個輕量級的子進程。 它被認為是最小的處理單元。 它是在程序中實現多任務處理的一種手段。 當涉及到遊戲、動畫等時,它是一個有用的功能。

Java 具有對創建線程和多線程的內置支持。 這是一種通過優化 CPU 空間利用率來最大限度地減少低效率和拖累的巧妙方法。 在 Java 中,這可以通過兩種方式完成:

  1. 擴展線程類,或
  2. 實現可運行接口

當多個線程同時執行時,稱為多線程。 這實質上允許程序的多個部分同時運行,線程的每個部分和每個線程都遵循不同的執行路徑。

線程利用共享內存空間; 內存沒有分配給每個部分,導致CPU使用率最大化。 此外,更改上下文不會佔用太多時間。 但是,過多的線程可能會使您的 CPU 參與上下文切換,並且您的執行可能會延遲。

線程可以存在以下六種狀態之一

  1. NEW——一旦創建了一個線程,它就以新的狀態存在。 它本質上意味著線程尚未開始執行。
  2. RUNNING – 當一個線程正在執行或排隊執行時,它處於運行狀態。
  3. WAITING - 一個正在運行的線程有時會被暫停或暫停,以允許另一個活動發生。 wait() 或 join() 的非超時版本可以暫停線程執行。 一旦動作發生,暫停的線程就會恢復。
  4. TIMED-WAITING – 運行中的線程有時會暫時停止或暫停特定的持續時間。 例如,當調用 sleep() 函數時。
  5. BLOCKED – 當掛起的 Java 線程無法獲取特定資源時,它會被阻塞並以阻塞狀態存在。
  6. TERMINATED – 當線程完成執行時,它處於終止狀態。 但是,您可以隨時終止線程。

了解有關 Java 架構和組件的更多信息。

在 Java 中創建線程的好處

創建線程有幾個優點。 其中一些是

  1. 由於線程是獨立的,即使它們在共享內存空間上運行,一次執行也不會影響另一次執行。 這也意味著您可以同時執行多個操作。
  2. 線程是多任務處理的一種形式,可以節省時間。
  3. 一個線程中的錯誤不會影響另一個線程。

如何在 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 校友身份、實用的實踐頂點項目和頂級公司的工作協助。

踏上夢想的工作

立即申請軟件工程碩士