首頁 >Java >java教程 >Thread.start() 與 Runnable.run():多執行緒有什麼不同?

Thread.start() 與 Runnable.run():多執行緒有什麼不同?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-03 16:53:39265瀏覽

Thread.start() vs. Runnable.run(): What's the Difference in Multithreading?

多執行緒中的Thread.start()和Runnable.run()

在深入研究多執行緒時,我們經常會遇到兩個關鍵的方法: .start() 和Runnable.run()。了解它們之間的差異對於有效的執行緒管理至關重要。

Runnable.run()

run() 方法是實作 Runnable 介面的關鍵部分。它定義了需要作為單獨線程執行的程式碼。透過呼叫 run(),您實際上可以在呼叫執行緒中啟動已實作程式碼的執行。

Thread.start()

與 run() 不同,呼叫 Thread .start() 不直接執行關聯執行緒的程式碼。相反,它啟動一個新線程並將 run() 方法的執行委託給該新線程。新執行緒獨立於呼叫執行緒運行,從而實現真正的多執行緒。

關鍵差異

根本差別在於是否要建立多個執行緒。呼叫 run() 只是在目前執行緒中執行程式碼,而 start() 會啟動一個新執行緒來執行程式碼。

範例

考慮兩個Runnable 類, R1 和R2:

class R1 implements Runnable {
    public void run() { ... }
}

class R2 implements Runnable {
    public void run() { ... }
}

案例1:使用run()

R1 r1 = new R1();
R2 r2 = new R2();

r1.run();
r2.run();
案例1:使用run()

在這種情況下,r1 和r2在同一執行緒中依序執行它們的 run() 方法。不會創建額外的線程。

R1 r1 = new R1();
R2 r2 = new R2();
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);

t1.start();
t2.start();
情況2:使用start()

在t1 和t2 上呼叫start() 時,將建立新執行緒分別執行r1 和r2 的run () 方法。這會產生真正的多線程,每個線程獨立執行。

以上是Thread.start() 與 Runnable.run():多執行緒有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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