伙计们,
我知道这个问题在此之前已被提出,但是间接地.但它没有回答我的怀疑.
问题:在同一个线程上调用start方法两次是否合法?
从规格来看,
不止一次启动一个线程永远不合法.特别是,一旦完成执行,线程可能无法重新启动.
我同意.但是我的代码没有抛出一个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();
}
}
Run Code Online (Sandbox Code Playgroud)
Q.1)我在Eclipse中运行了上面的代码.在这里,因为我试图在同一个实例上启动一个新线程,所以IllegalThreadStateException
预计会抛出一个.但事实并非如此.
为什么?
Q.2) 如果我们确实在同一个实例上开始了一个新线程,那会有什么害处?
任何帮助将不胜感激 !
public class GetCurrentPrice implements Runnable{
public void run(){
// some business logic
}
}
public class Main{
public static void main(){
GetCurrentPrice gcp = new GetCurrentPrice();
Thread t = new Thread(gcp);
while(true){
t.start();
//once this thread execution is complete, restart this thread.
}
}
}
Run Code Online (Sandbox Code Playgroud)
这会抛出java.lang.IllegalThreadStateException.我想要实现的是,运行此线程一次,等待它完成,一旦完成,再次运行此线程.