Rumah >Java >javaTutorial >Di Java, bila hendak memanggil Thread.run() dan bukannya Thread.start()?
Apabila kita memanggil kaedah start() pada thread, ia menyebabkan thread mula melaksanakan dan kaedah run() thread dipanggil oleh Java Virtual Machine (JVM). Jika kita memanggil kaedah run() secara langsung, ia akan dianggap sebagai kaedah biasa overridden kelas benang (atau antara muka boleh jalan), dan ia akan dilaksanakan dalam konteks urutan semasa, bukan dalam benang baru dalam pelaksanaan.
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> } }
Dalam contoh di atas, dua utas dicipta dan kaedah run() dipanggil terus pada utas dan bukannya memanggil kaedah mula().
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
Atas ialah kandungan terperinci Di Java, bila hendak memanggil Thread.run() dan bukannya Thread.start()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!