我知道这个问题之前已经问过,虽然间接地。但它没有回答我的疑问。
问: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)如果我们确实在同一个实例上启动了一个新线程,它会有什么危害?
任何帮助将不胜感激!
我不认为这只是(它)会造成什么危害的问题。我认为这更多是一个毫无意义的问题。启动一个已经运行的线程是什么意思?你可以开一辆已经开着的汽车吗?这个想法根本没有意义。 – 2011-03-31 14:19:46