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