线程状态与生命周期
Java中的线程的生命周期大体可分为6种状态,要学好它,思路非常简单,只要能搞懂生命周期中各个节点的状态转换机制就可以了,文末我还汇总线程生命周期的常见考点作为补充。
为了助大家掌握好线程状态与生命周期,重点讲解以下5点:
1.Java线程的6种状态
2.线程的状态流转全过程
3.线程状态切换细节
4.sleep wait notify yield join的区别
5.线程状态与流转面试必考题详解
1. NEW(初始化状态)
2. RUNNABLE(可运行 / 运行状态)
3. BLOCKED(阻塞状态)
4. WAITING(无时限等待)
5. TIMED_WAITING(有时限等待)
6. TERMINATED(终止状态)
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,那么允许多个线程并行运行。

浙公网安备 33010602011771号