多執行緒中的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中文網其他相關文章!