當我們在執行緒上呼叫start() 方法時,它會導致執行緒開始執行,並且執行緒的run() 方法會被呼叫Java 虛擬機器(JVM)。如果我們直接呼叫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(); <strong>// calling run() method directly instead of start() method</strong> t2.run(); <strong>// calling run() method directly instead of start() method</strong> } }
在上面的範例中,建立了兩個線程,並直接在執行緒上呼叫了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##
以上是在Java中,什麼時候呼叫Thread.run()而不是Thread.start()?的詳細內容。更多資訊請關注PHP中文網其他相關文章!