繁体   English   中英

什么是Java线程的生命周期?

[英]What is the LifeCycle of Thread in Java?

在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

线程状态:

  1. 新建-已创建但未执行
  2. 可运行-正在运行
  3. 已终止-运行方法范围已结束。

线程也可以具有等待,定时等待和阻塞状态

有关更多信息,请参见此处: https : //docs.oracle.com/javase/7/docs/api/java/lang/Thread.State.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM