-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