Java线程的生命周期
什么是线程
线程是进程的一个实体,是CPU调度和分派的最小单位。
进程线程协程
进程:
是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位
线程:
是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。
协程:
是一种比线程更加轻量级的存在。一个线程也可以拥有多个协程。其执行过程更类似于子例程,或者说不带返回值的函数调用。
线程的生命周期
主要分为新建、就绪、运行、阻塞、死亡五种状态
-
创建
//创建线程 新建状态 Thread thread = new Thread() { @Override public void run() { System.out.println("test"); super.run(); } }; //就绪状态,获取到cpu就可以执行 thread.start();
-
就绪
线程调用start方法
-
运行
调用start发方法并获取到CPU的时间拥有执行权
-
阻塞
等待阻塞:运行的线程调用wait方法,JVM会将该线程放入等待池中
同步阻塞:运行的线程在获取对象的同步锁时,该锁被其他线程占用,则也会进入等待
其他阻塞:运行线程执行sleep和join方法或者发出IO请求时,JVM会将线程置为阻塞状态。
-
死亡
其他阻塞:运行线程执行sleep和join方法或者发出IO请求时,JVM会将线程置为阻塞状态。
-
死亡
(1)run 方法执行完毕(2)线程抛出一个未捕获的Exception或Error(3)直接调用该线程的stop()方法来结束该线程