我们可以用Java启动两次线程吗
时间:2020-01-09 10:35:06 来源:igfitidea点击:
我们可以在Java中两次启动线程吗?简短的回答是"否",这篇文章试图解释为什么无法在Java的同一线程上两次调用start()方法。
run()方法后线程终止
正如Java中的线程生命周期(线程状态)一文中所述,一旦线程完成执行其run()方法后,它将进入终止状态(即线程已死)。由于线程对象已经死亡,因此不允许在线程上调用start()方法,并引发异常。
根据Java文档–一次启动一个线程永远是不合法的。特别是,线程一旦完成执行就可能不会重新启动。
如果线程已经启动,抛出:IllegalThreadStateException异常。
因此,一个线程只能启动一次,尝试在Java中再次启动同一线程将抛出IllegalThreadStateException。
Java示例代码
public class ThreadTwiceDemo implements Runnable{ public static void main(String[] args) { Thread t = new Thread(new ThreadTwiceDemo()); t.start(); // Calling start method again on same thread object t.start(); } @Override public void run() { System.out.println("In run method"); } }
输出:
In run method Exception in thread "main" java.lang.IllegalThreadStateException at java.lang.Thread.start(Unknown Source) at com.theitroad.ThreadTwiceDemo.main(ThreadTwiceDemo.java:9)
正如我们在输出中看到的,当我们尝试启动一个线程两次时,抛出IllegalThreadStateException。