多次启动一个线程会是怎么样呢,我们看看源码是怎么说的
/**
* It is never legal to start a thread more than once.
* In particular, a thread may not be restarted once it has completed execution.
启动一个线程不止一次是不合法的。特别是,线程一旦完成执行就不能重新启动
* @exception IllegalThreadStateException if the thread was already started.
*/
public synchronized void start() {
/**
* A zero status value corresponds to state "NEW"
* 0的状态表示新建(new)
*/
if (threadStatus != 0)
throw new IllegalThreadStateException();
group.add(this);
boolean started = false;
try {
start0();//这是一个本地方法
started = true;
} finally {
try {
if (!started) {
group.threadStartFailed(this);
}
} catch (Throwable ignore) {
/* do nothing. If start0 threw a Throwable then it will be passed up the call stack */
}
}
}
我们可以看到,如果线程一旦被启动,如果再次启动,会报IllegalThreadStateException(不合法的线程状态异常)