线程的生命周期

2020-07-03 10:03:04 浏览数 (1)

线程的生命周期

线程的六种状态: NEW、RUNNABLE、BIOCKED、WAITING、TIME_WAITING、TERMINATED。

  • NEW:初始状态,线程被构建,但是还没调用start方法;
  • RUNNABLE: 运行中状态,包括了就绪状态跟运行两种状态;
  • BLOCKED: 阻塞状态,线程进入等待状态,也就是线程因为某种原因放弃了CPU的执行权,分为多种情况

等待阻塞: 运行的线程执了wait方法,jvm把当前线程放入到等待队列中

同步阻塞:运行的线程获取到对象的同步锁时,若该同步锁被其他线程占用了,jvm会把当前线程放入锁池中

其他阻塞: 运行的线程执行了Thread.sleep()或者join方法,JVM会把当前线程设置为阻塞状态,当sleep结束或者 join线程终止则线程回复

  • WAITING: 一个正在无限期等待另一个线程执行一个特别的动作的线程
  • TIME_WAITING: 超时等待状态,超时以后自动返回
  • TERMINATED:终止状态, 表示当前线程执行完毕。
图解

首先线程的出生到销毁是上面的3个状态;

接着线程可以调用wait()方法变成WAITING状态

当有两个线程的时候,我们加锁可以转变线程的状态为BLOCKED

最后当我们执行wait(),join(),sleep() 会进入TIME_WAITING状态

0 人点赞