首頁 >Java >java教程 >Java 中呼叫 Thread.start() 和 Thread.run() 有什麼不同?

Java 中呼叫 Thread.start() 和 Thread.run() 有什麼不同?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-13 11:17:02647瀏覽

What is the difference between calling Thread.start() and Thread.run() in Java?

Java 中呼叫Thread.start() 與Thread.run()

簡介:

簡介:中Java中,多執行緒提供了一個任務並發執行的機制。多執行緒的關鍵元件之一是 Thread 類別。要執行線程,可以呼叫 Thread.start() 或 Thread.run()。本文旨在闡明這兩種方法之間的差異,並展示它們何時產生差異。

理解差異:

在執行緒物件上呼叫 Thread.start() 會啟動新的執行緒。這指示作業系統的線程調度程序創建一個新線程並調度其執行。一旦啟動,線程就變得獨立並與主線程並發執行。 另一方面,在執行緒物件上呼叫 Thread.run() 只是在目前執行緒中執行該執行緒的 run() 方法。在這種情況下,執行緒不會被調度為獨立運行,而是在呼叫run()方法後依序執行run()方法。

    為什麼要啟動一個執行緒而不是呼叫Run?
  • 啟動線程比直接呼叫run() 有幾個好處:
  • 並發:透過啟動一個線程,多個線程可以同時執行,利用可用的資源處理資源並提高應用程式效能。
  • 線程管理:作業系統管理線程,包括調度和上下文切換,使應用程式擺脫這些責任。

程式碼簡單:與直接呼叫 run() 手動管理執行緒相比,啟動執行緒是一種更簡潔、更直接的實作並發的方法。

範例示範差異:

為了說明差異,請考慮以下範例:

當使用run() 方法呼叫執行此程式碼時,損失將為:

在這種情況下,run()方法在主執行緒中執行,且不存在並發。但是,當使用 start() 方法呼叫執行程式碼時,輸出將是:... 後面是主執行緒的輸出,表示執行緒正在並發運行。

以上是Java 中呼叫 Thread.start() 和 Thread.run() 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn