你重新new出来,再start试试。

解决方案 »

  1.   

    这个问题其实很简单,线程有自己的生命周期,thread引用,只要new出来就一直存在,所以即使thread实例run结束,亦有效,这可以得到运行过的thread的一些属性。可关键就在于thread是在主线程之外运行,他已不直接受控于主线程,即主线程无法直接destroy线程。每个thread多必须自己去destroy,而事件激发时机就是run()方法的结束。这也就是你遇到的问题,直接解决方法也就是楼上所说的new一个新的实例。
    而实际上的thread的run方法一般包含了一死循环,循环体中包含了Thread.sleep(1000)语句(否则,除非高优先级的出现,cpu资源全让他给占了),而跳出循环的条件可以有主线程提供。如上所述,跳出循环,也意味着本thread的死亡,这也就间接的实现了主线程对子线程的管理。
    另外thread的yield,sleep,join以及object的wait方法多必须理解清楚