主页 > 下载imtoken钱包20app > 线程的基本状态是什么?

线程的基本状态是什么?

下载imtoken钱包20app 2023-09-02 05:11:59

一个Java线程在运行生命周期中的指定时刻可能只能处于以下6种不同状态之一(图源《Java并发编程艺术》4.1.第4节)。

Java线程的状态

状态有哪些

线程在其生命周期中并不是处于固定状态,而是随着代码的执行在不同的状态之间切换。 Java线程的状态转换如下图所示(图源《Java并发编程的艺术》4.1.第四节):

状态有哪些

Java线程状态变迁

状态有哪些

从上图可以看出:

状态有哪些

线程创建后处于NEW(新建)状态状态有哪些,调用start()方法后开始运行,此时线程处于READY(可运行)状态。处于runnable状态的线程在获得一个cpu时间片(timeslice)后,就进入RUNNING状态。

状态有哪些

操作系统在Java虚拟机(JVM)中隐藏了READY和RUNNING状态,它只能看到RUNNABLE状态(来源:HowToDoInJava:Java Thread Life Cycle and Thread States),所以Java系统一般会这两个状态统称为 RUNNABLE 状态。

RUNNABLE-VS-RUNNING

线程执行wait()方法后状态有哪些,线程进入**WAITING**状态。进入等待状态的线程需要依靠其他线程的通知才能回到运行状态,TIME_WAITING(超时等待)状态相当于在等待状态的基础上增加了超时限制,比如通过sleep (long millis) 方法或等待 (long millis) 方法可以将 Java 线程置于 TIMED WAITING 状态。当超时期限到期时,Java 线程将返回 RUNNABLE 状态。当线程调用同步方法时,线程将进入BLOCKED(阻塞)状态而不获取锁。线程在执行完 Runnable 的 run() 方法后会进入 TERMINATED 状态。