线程的生命周期

Posted by xdshent on April 6, 2020

进程是操作系统分配资源的基本单位,线程是CPU调度的基本单位,一个进程内可能包含多个线程,进程内的线程共享资源(代码、数据等)。以下内容参考《Java并发编程的艺术》一书。

创建线程的几种方式

本质上只有一种方式那就是构造java.lang.Thread,而实现线程的执行单元有两种方式分别是重写Thread 的run 方法(模版模式),另外一种是实现java.lang.Runnable中的run方法(策略模式)并将该实例传入Thread的构造方法。

线程的几种状态

java.lang.Thread.State

状态 说明
NEW 初始状态,还没有调用start()方法
RUNNABLE 运行状态,Java线程将操作系统中的就绪和运行两种状态笼统地称作“运行中”
BLOCKED 阻塞状态,表示线程阻塞于锁(synchronized)
WAITING 等待状态,表示线程进入等待状态,进入该状态表示当前线程需要等待其他线程做一些特定动作(通知或中断)
TIME_WAITING 超时等待状态,该状态不同于WAITING,它是可以在指定的时间自行返回的
TEMINATED 终止状态,表示当前线程已经执行完毕

线程的状态转换

thread-state-transition