线程的生命周期

java内存模型

图解析

1.一般情况下线程主要经历: 准备, 就绪, 运行, 死亡四种状态.
2.准备:即创建线程, 包括集成Thread, 线程池, spring方式等等
3.就绪:线程创建并调用start()方法并不代表线程将立即获得资源, 而是进入到就绪状态进行资源分配
4.运行:抢占到资源的线程将执行, 执行过程可能会含有一些别的操作
 1).线程等待, 直到调用 notify()或notifyAll()方法被唤醒, 这里唤醒后不会立即继续执行线程, 而是进入就绪状态重新抢占资源
 2).线程休眠, 直到休眠时间结束, 同样结束后不会立即继续执行线程, 而是进入就绪状态重新抢占资源
 3).线程阻塞, IO资源阻塞, 锁等方式使线程进入阻塞队列, 释放锁将继续执行
5.死亡: 调用stop()方法, 线程中断, 或线程执行完毕则线程死亡