本帖最后由 sno_guo 于 2014-08-19 11:51:28 编辑

解决方案 »

  1.   

    线程的状态问题,查一下start的源码可以知道start里面有checkNotStarted() 函数,这个函数是判断线程状态的,而你执行过一次之后线程状态已经为TERMINATED了,这时候执行start会抛出这个异常的
      

  2.   


    新手求教,状态为TERMINATED时checkNotStarted() 还为真?
      

  3.   


    新手求教,状态为TERMINATED时checkNotStarted() 还为真?

    private void checkNotStarted() {
            if (hasBeenStarted) {
                throw new IllegalThreadStateException("Thread already started");
            }
        }
    然后追踪下Thread代码里面hasBeenStarted初始化为false,在start()函数中置为true,之后应该没有进行过修改,所以只要start()过一次都为TRUE吧