未重写Thread类run方法的结果及线程状态变化问题
未重写Thread类run方法的执行结果与线程状态变化
执行结果:调用线程的
start()方法后,会执行Thread类自带的默认run()方法。默认实现逻辑是判断是否传入了Runnable类型的target对象,如果没有传入(既没重写run方法也没传入Runnable实例),这个方法会直接执行完毕,不会运行任何自定义业务逻辑。Thread类默认run方法核心逻辑简化:
public void run() { if (target != null) { target.run(); } }线程状态变化:
- 调用
start()前,线程处于NEW状态; - 调用
start()后,线程会先进入**Runnable(就绪)**状态,等待CPU分配时间片; - 获得CPU时间片后进入**Running(运行)**状态,执行默认的
run()方法; - 方法执行完毕后,线程转为**Terminated(终止)**状态。
不会直接从NEW状态跳转到Terminated状态,必须经过就绪、运行阶段。
- 调用
内容的提问来源于stack exchange,提问作者Lov Verma
相关产品推荐
相关产品推荐

