這可能是一個基本的問題,我用這個困惑,通過調用start()和run()來運行線程,有什麼不同?
在一個文件中我有這樣的:
public class MyThread extends Thread {
@Override
public void run() {
//stuffs
}
}
現在
在另一個文件中,我有這樣的:
public class Test {
public static void main(String[] args) {
Thread obj = new MyThread();
//now cases where i got confused
//case 1
obj.start(); //it makes the run() method run
//case 2
obj.run(); //it is also making run() method run
}
}
所以在上面兩種情況之間有什麼區別,情況1是創建一個新線程,而情況2是不創建一個線程?這是我的猜測...希望能有更好的回答SO guys.Thanks
有一個不錯的鏈接,涵蓋了線程基礎:http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html –
@ rai.skumar感謝您的鏈接,但這是在concrrency,不是我在這裏問的。 –
你希望什麼「更好的答案」?下面是簡短的答案:start()是庫提供給你的方法,當你想啓動一個線程時,你可以調用它。 run()是_you_提供庫調用的方法,它決定了線程將執行的操作。 –