何時在 Java 中呼叫 Thread.run() 而非 Thread.start()?
在為執行緒呼叫 start() 方法時,它會導致執行緒開始執行,並且 Java 虛擬機器 (JVM) 將呼叫該執行緒的 run() 方法。
如果直接呼叫 run() 方法,則它將被視為執行緒類(或可執行介面)的普通覆蓋方法,並且它將在當前執行緒的上下文中執行,而不是在新執行緒中執行。
示例
public class CallRunMethodTest extends Thread {
@Override
public void run() {
System.out.println("In the run() method: " + Thread.currentThread().getName());
for(int i = 0; i < 5 ; i++) {
System.out.println("i: " + i);
try {
Thread.sleep(300);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
}
}
public static void main(String[] args) {
CallRunMethodTest t1 = new CallRunMethodTest();
CallRunMethodTest t2 = new CallRunMethodTest();
t1.run(); // calling run() method directly instead of start() method
t2.run(); // calling run() method directly instead of start() method
}
}
在以上示例中,建立了兩個執行緒,並且直接在這些執行緒上呼叫了 run() 方法,而不是呼叫 start() 方法。
輸出
In the run() method: main i: 0 i: 1 i: 2 i: 3 i: 4 In the run() method: main i: 0 i: 1 i: 2 i: 3 i: 4
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP