Ull*_*las 0 java lifecycle multithreading
在java中我们创建一个线程对象
Thread t1 = new Thread(Runnable object);
t1.start();
Run Code Online (Sandbox Code Playgroud)
线程生命周期的不同阶段t1
和执行后run()
的状态是t1
什么?
线程在其生命周期中经历各个阶段.例如,线程诞生,启动,运行,然后死亡.下图显示了线程的完整生命周期.
Java线程上面提到的阶段在这里解释:
New:
新线程在新状态下开始其生命周期.它一直处于这种状态,直到程序启动线程.它也被称为天生的线程.
Runnable
:启动新生成的线程后,线程变为可运行.处于此状态的线程被视为正在执行其任务.
Waiting:
有时,当线程等待另一个线程执行任务时,线程转换到等待状态.只有当另一个线程发信号通知等待线程继续执行时,线程才会转换回可运行状态.
Timed waiting:
可运行线程可以在指定的时间间隔内进入定时等待状态.当该时间间隔到期或者等待的事件发生时,处于此状态的线程将转换回可运行状态.
Terminated ( Dead )
:可运行线程在完成任务或以其他方式终止时进入终止状态.
资料来源:http://www.tutorialspoint.com/java/java_multithreading.htm
线程可以处于以下状态之一:
NEW :
尚未启动的线程处于此状态.
RUNNABLE :
在Java虚拟机中执行的线程处于此状态.
BLOCKED:
处于阻塞状态的线程正在等待监视器锁定以进入同步块/方法或synchronized
在调用后重新输入块/方法Object.wait
.
WAITING:
无限期等待另一个线程执行特定操作的线程处于此状态.
由于调用以下方法之一,线程处于等待状态:
Object.wait with no timeout
Thread.join with no timeout
LockSupport.park
Run Code Online (Sandbox Code Playgroud)
TIMED_WAITING:
正在等待另一个线程执行最多指定等待时间的操作的线程处于此状态.
由于在指定的正等待时间内调用以下方法之一,线程处于定时等待状态:
Thread.sleep
Object.wait with timeout
Thread.join with timeout
LockSupport.parkNanos
LockSupport.parkUntil
Run Code Online (Sandbox Code Playgroud)
TERMINATED:
已退出的线程处于此状态.
请参阅pramodbablad的这篇文章,以了解此图中的各种状态
在上图中,除了RUNNING
(已经以圆圈示出)之外,所有其他矩形块表示各种各样的thread states
.