。当线程被创建和启动时,它既不会在启动时就进入执行状态,也不会总是处于执行状态一个线程的生命周期中有多少个状态?状态枚举类中有6个枚举常量,线程类中有3个状态枚举类。对应于尚未启动的线程的线程
publicenum状态{
/* *
* Thread state的六个状态。
*/
new,
/* *
*可运行线程的线程状态。处于runnable
*状态的线程正在Java虚拟机中执行,但它可能正在等待来自操作系统56+
*的其他资源,如处理器。处于阻塞状态的线程正在等待监视器锁定
/**
*等待线程的线程状态。
*由于调用以下
*方法之一,线程处于等待状态:
*
* { @ link Object # wait()Object . wait },无time out
* { @ link # join()Thread . join },无time out
* { } 已调用{@code Thread.join()}
*的线程正在等待指定的线程终止。
*/
WAITING,
/**
*具有指定等待时间的等待线程的线程状态。
*由于使用指定的正等待时间调用以下方法之一,线程处于定时等待状态:
}
下面将详细分析每个状态:新:线程刚刚创建,但尚未启动尚未调用start方法锁定被阻塞:当一个线程试图获取一个对象锁,而该对象锁被另一个线程持有时,该线程进入阻塞状态;当线程持有锁时,线程变为可运行的可运行:线程可以在java虚拟机中运行的状态,运行自己的代码或不运行,这取决于操作系统处理器。定时等待:在相同的等待状态下,有几个方法有超时参数,调用它们将进入定时等待状态。这种状态将一直保持到超时或收到唤醒通知带有超时参数的常见方法有线程、睡眠、对象、等待无限等待:一个线程在等待另一个线程执行(唤醒)操作时进入等待状态进入此状态后,您无法自动醒来。您必须等待另一个线程调用notify或notifyAll方法来唤醒。死亡:由于运行方法的正常退出而导致的死亡,或者由于运行方法的异常终止而没有捕获而导致的死亡
线程6状态