【发布时间】:2011-07-26 22:41:04
【问题描述】:
伙计们,
我知道这个问题在此之前已经被问过,虽然是间接的。但它并没有回答我的疑问。
问题:Is it legal to call the start method twice on the same Thread?
来自spec,
启动线程是不合法的 不止一次。特别是,一个 线程可能不会重新启动一次 已完成执行。
我同意。但是我的代码不会抛出IllegalThreadStateException,它预计会在执行以下程序时抛出。
public class Tester extends Thread {
public void run() {
System.out.print("run");
}
public static void main(String[] args) {
Tester thread = new Tester();
new Thread(thread).start();
new Thread(thread).start();
}
}
Q.1) 我在 Eclipse 中运行了上述代码。在这里,由于我试图在同一个实例上启动一个新线程,因此预计会抛出一个 IllegalThreadStateException。但事实并非如此。
为什么?
Q.2) 如果我们确实在同一个实例上启动了一个新线程,它会有什么危害?
任何帮助将不胜感激!
【问题讨论】:
-
我认为这(仅)不是它会造成什么伤害的问题。我认为这更像是一个没有意义的问题。启动一个已经在运行的线程是什么意思?你能启动一辆已经在运行的汽车吗?这种想法毫无意义。
标签: java multithreading