线程启动的流程

为什么线程启动是调用start方法来启动线程而不能直接调用run方法?
如果多次调用start方法会发生什么?

线程的状态

线程从创建到死亡是会经历多个状态的流转的。它们分别是:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED

alt

start()方法是用来启动线程,真正实现了多线程运行。

run()方法是一个普通方法。

调用start()方法后会先判断线程的状态是否为NEW,所以线程只能启动一次。