先说结论:
一个线程被调用两次start()会报错。
进一步解释为什么:
为什么要这样设计呢?java线程状态有6种,
分别是NEW:刚创建线程对象,初始状态,RUNNABLE:包含就绪和运行中,WAITING:等待状态,TIMED_WAITING:超时等待状态,BLOCKED:阻塞状态,TERMINATED:终止状态,我觉得这样设计是符合单一职责的设计原则,start()就是启动线程的方法,不存在重启线程的作用,如果最终现在处于休眠、阻塞或终止,想要重新回到RUNNABLE状态,那就使用对应的合适的方法,如终止状态的线程想回到RUNNABLE,可以再加一个restart()方法。