视频课程
小黑屋思过中,禁止观看!
评论并刷新后可见

您需要在视频最下面评论并刷新后,方可查看完整视频

视频课程
立即观看
付费视频

您支付费用,方可查看完整视频

¥{{user.role.value}}
课程视频
开始学习
会员专享

视频合集

Java线程的6种状态与生命周期详解

  • 课程笔记
  • 问答交流

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

为了助大家掌握好线程状态与生命周期,本节课我会重点讲解以下5点:

1.Java线程的6种状态

2.线程的状态流转全过程

3.线程状态切换细节

4.sleep wait notify yield join的区别

5.线程状态与流转面试必考题详解

Java线程的6种状态

Java线程的6种状态与生命周期详解-mikechen
Java 语言中线程共有六种状态,分别是:
1. NEW(初始化状态)
2. RUNNABLE(可运行 / 运行状态)
3. BLOCKED(阻塞状态)
4. WAITING(无时限等待)
5. TIMED_WAITING(有时限等待)
6. TERMINATED(终止状态)

线程的生命周期

Java线程的6种状态与生命周期详解-mikechen

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,那么允许多个线程并行运行。

评论交流
  1. 李鸿翼

    一、线程生命周期6大状态
    1.New
    2.runnable(ready、running)
    3.blocked
    4.waiting
    5.timed_waiting
    6.terminated

    二、wait和sleep
    wait释放锁和CPU,用于线程切换
    sleep释放CPU,仍占有锁,用于线程暂停

    三、yeild 释放cpu,不释放锁,线程放入就绪队列

    • mikechen

      输出是最好的学习,这样的精神无论做什么事情都会成,加油!