主页 > 下载imtoken钱包20app > 线程的基本状态是什么?
线程的基本状态是什么?
一个Java线程在运行生命周期中的指定时刻可能只能处于以下6种不同状态之一(图源《Java并发编程艺术》4.1.第4节)。
线程在其生命周期中并不是处于固定状态,而是随着代码的执行在不同的状态之间切换。 Java线程的状态转换如下图所示(图源《Java并发编程的艺术》4.1.第四节):
从上图可以看出:
线程创建后处于NEW(新建)状态状态有哪些,调用start()方法后开始运行,此时线程处于READY(可运行)状态。处于runnable状态的线程在获得一个cpu时间片(timeslice)后,就进入RUNNING状态。
操作系统在Java虚拟机(JVM)中隐藏了READY和RUNNING状态,它只能看到RUNNABLE状态(来源:HowToDoInJava:Java Thread Life Cycle and Thread States),所以Java系统一般会这两个状态统称为 RUNNABLE 状态。
线程执行wait()方法后状态有哪些,线程进入**WAITING**状态。进入等待状态的线程需要依靠其他线程的通知才能回到运行状态,TIME_WAITING(超时等待)状态相当于在等待状态的基础上增加了超时限制,比如通过sleep (long millis) 方法或等待 (long millis) 方法可以将 Java 线程置于 TIMED WAITING 状态。当超时期限到期时,Java 线程将返回 RUNNABLE 状态。当线程调用同步方法时,线程将进入BLOCKED(阻塞)状态而不获取锁。线程在执行完 Runnable 的 run() 方法后会进入 TERMINATED 状态。