-3
我有下面的類行爲螺紋通過擴展Thread類
public class Thread1 extends Thread {
@Override
public void run() {
System.out.println("I am the first thread");
}
public static void main(String args[]) {
Thread1 t = new Thread1();
t.start();
}
}
如果我運行上面的程序,將在新的線程立即打印
"I am the first thread"
主如果我嘗試兩次啓動相同的線程它會拋出java.lang.IllegalThreadStateException
否瓦特我將通過重寫start()方法
public class Thread1 extends Thread {
@Override
public void run() {
System.out.println("I am the first thread");
}
@Override
public void start() {
System.out.println("I am the Start");
}
public static void main(String args[]) {
Thread1 t = new Thread1();
t.start();
t.start();
}
}
現在,如果我調用start()方法重寫爲下面的線程1類兩倍的輸出將是
I am in start
I am in start
上述程序是拋出的任何異常。任何人都可以解釋我這種行爲。爲什麼它不啓動新的線程。似乎是簡單但不能理解它。
你覺得'線程'的'start'實現了什麼?如果你重寫它,你期望會發生什麼?你爲什麼這麼認爲? –
閱讀文檔:http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#start-- –
嘗試在你重寫的方法中調用'super.start()'並且看到怎麼了。 – DoubleDouble