<aside> <img src="notion://custom_emoji/c233e7bc-acd0-812b-a811-00030dcd1edc/29e3e7bc-acd0-808e-ac64-007a3fac687d" alt="notion://custom_emoji/c233e7bc-acd0-812b-a811-00030dcd1edc/29e3e7bc-acd0-808e-ac64-007a3fac687d" width="40px" />
多线程面试核心问题
</aside>
在 Java 中,线程的生命周期被明确地定义在 java.lang.Thread.State 这个枚举类中。一个线程在任何给定时间点,都有且仅有处于这六种状态中的一种。
这六种状态是:
NEW (新建)RUNNABLE (可运行)BLOCKED (阻塞)WAITING (无限等待)TIMED_WAITING (限时等待)TERMINATED (终止)NEW (新建)new Thread(...) 创建了一个 Thread 对象,但还未调用其 start() 方法时,这个线程就处于 NEW 状态。Thread 对象),但你还没去机场(没调用 start())。new Thread();thread.start() 方法。
RUNNABLE 状态。RUNNABLE (可运行)这是最容易误解的状态。在 Java 的视角里,RUNNABLE 状态包含了传统操作系统所说的**“就绪态”和“运行中”**两种状态。
start() 后,进入了可运行线程池,等待 JVM 的线程调度器分配 CPU 时间片。run() 方法中的代码。