JAVA线程六种状态_Java线程的6种状态与生命周期详解

Java中的线程的生命周期大体可分为6种状态,要学好它,思路非常简单,只要能搞懂生命周期中各个节点的状态转换机制就可以了,文末我还汇总线程生命周期的常见考点作为补充。

本节课重点会讲到以下几点:

Java线程的6种状态

线程的状态流转

sleep wait notify yield join的区别

线程状态与流转面试题

Java线程的6种状态

JAVA线程六种状态_Java线程的6种状态与生命周期详解_第1张图片

Java 语言中线程共有六种状态,分别是:

1. NEW(初始化状态)

2. RUNNABLE(可运行 / 运行状态)

3. BLOCKED(阻塞状态)

4. WAITING(无时限等待)

5. TIMED_WAITING(有时限等待)

6. TERMINATED(终止状态)

线程的生命周期

JAVA线程六种状态_Java线程的6种状态与生命周期详解_第2张图片

1. 初始状态(new):指的是线程已经被创建,但是还不允许分配 CPU 执行。这个状态属于编程语言特 有的,不过这里所谓的被创建,仅仅是在编程语言层面被创建,而在操作系统层面,真正的线程还没有创建。

使用new创建一个线程对象,仅仅在堆中分配内存空间,在调用start方法之前的线程所处的状态;在此状态下,线程还没启动,只是创建了一个线程对象存储在堆中;比如:

// 自定义线程对象

class MyThread extends Thread {

public void run() {

// 线程需要执行的代码

......

}

}

// 创建线程对象

MyThread myThread = new MyThread();

2. 可运行状态(runnable):指的是线程可以分配 CPU 执行。在这种状态下,真正的操作系统线程已经被成 功创建了,所以可以分配 CPU 执行。

当新建状态下的线程对象调用了start方法,该线程对象就从新建状态进入可运行状态(runnable)。

MyThread myThread = new MyThread();

// 从 NEW 状态转换到 RUNNABLE 状态

myThread.start();

可运行状态(runnable):又可以细分成两种状态,ready和running,分别表示就绪状态和运行状态。

就绪状态:线程对象调用start方法之后,等待JVM的调度(此时该线程并没有运行),还未开始运行。

运行状态:线程对象已获得JVM调度,处在运行中;如果存在多个CPU,那么允许多个线程并行运行。

隐藏内容,您需要满足以下条件方可查看

End

No related posts.

你可能感兴趣的:(JAVA线程六种状态)