【问题标题】:IllegalStateException in the context of multithreading多线程上下文中的 IllegalStateException
【发布时间】:2014-08-10 22:15:45
【问题描述】:

我正在学习核心java,学习了多线程IllegalStateException

我已经阅读了standard documentationthis question on SO...但是在线程上下文中找不到合适的解决方案。

用书的话说:

IllegalStateException 两次启动线程时抛出。

我看不懂它在说什么..即使没有给出例子..

什么时候发生在线程的上下文中?谁能举个例子?

【问题讨论】:

  • 是的,这意味着两次调用Thread.start()
  • @markspace 你能举个例子在多线程中实际发生 IllegalStateException 吗?
  • 你认为当你启动一个线程两次是什么意思?你知道怎么开话题吗?
  • @SotiriosDelimanolis 好的..现在明白了..我很傻。:)..可能是我的知识很模糊。
  • 是的,这并不复杂。有时你认为事情很困难,其实不然。只需稍加思考即可解决。

标签: java multithreading exception exception-handling illegalstateexception


【解决方案1】:
   public static void main(String[] args) {
      Thread t = new Thread();
      t.start();
      t.start();
   }

生产:

Exception in thread "main" java.lang.IllegalThreadStateException    at
java.lang.Thread.start(Thread.java:682)     at
quicktest.CopyOnWrite.main(CopyOnWrite.java:23)
Java Result: 1

【讨论】:

    【解决方案2】:

    是的,如果线程已经启动,则不能调用它的 start 方法。

    public void start()

    使该线程开始执行; Java 虚拟机调用 该线程的run方法。

    结果是两个线程同时运行:当前 线程(从调用开始方法返回)和另一个 线程(执行其运行方法)。

    多次启动线程是不合法的。特别是,一个 线程完成执行后可能不会重新启动。

    抛出: IllegalThreadStateException - 如果线程已经启动。

    另见: 运行(),停止()

    (Source)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-31
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      相关资源
      最近更新 更多