首頁 > Java > java教程 > Java 執行緒中的 Run() 與 start():多執行緒行為有何不同?

Java 執行緒中的 Run() 與 start():多執行緒行為有何不同?

Mary-Kate Olsen
發布: 2024-12-21 18:36:12
原創
534 人瀏覽過

Run() vs. start() in Java Threads: What's the Difference in Multithreading Behavior?

執行緒中的Run()與start():全面講解

多執行緒程式設計中,有效理解Thread.run之間的區別() 和Runnable.run() 是至關重要。

問題:

考慮以下代碼片段:

public static void main() {
    R1 r1 = new R1();
    R2 r2 = new R2();

    r1.run();
    r2.run();
}
登入後複製
public static void main() {
    R1 r1 = new R1();
    R2 r2 = new R2();
    Thread t1 = new Thread(r1);
    Thread t2 = new Thread(r2);

    t1.start();
    t2.start();
}
登入後複製

答案:

第一個範例:否多執行緒

第一個片段中,r1.run() 和 r2.run() 直接執行,無需建立新執行緒。因此,R1 和 R2 在主執行緒中依序執行。

第二個範例:多執行緒

在第二個片段中,建立了 Thread 物件(t1 和 t2)分別封裝 R1 和 R2 實例。當呼叫 t1.start() 和 t2.start() 時,會啟動新線程,每個線程與主線程並行執行對應 Runnable 實作的 run() 方法。

Key區別:

  • 執行緒建立: start() 建立一個新執行緒,而run() 在呼叫執行緒中執行Runnable。
  • 執行上下文: start() 在新建立的獨立執行緒中執行 Runnable,提供真正的平行執行。 run() 在呼叫執行緒內執行 Runnable,限制並發。

以上是Java 執行緒中的 Run() 與 start():多執行緒行為有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板