一、JDK帮助手册
打开JDK帮助手册,搜索Thread.State
线程状态容易跟操作系统的进程状态混淆。通过帮助手册,我们可以知道线程的确切状态是6种。
二、线程状态
1. 初始状态
新创建了一个线程对象,但还没有调用start()方法时。
2.1. 就绪状态
- 调用线程的start()方法,此线程进入就绪状态。
- 当前线程sleep()方法结束,当前线程进入就绪状态。
- 其他线程join()结束,当前线程进入就绪状态。
- 当前线程时间片用完了,调用当前线程的yield()方法,当前线程进入就绪状态。
- 锁池里的线程拿到对象锁后,进入就绪状态。
2.2. 运行中状态
线程调度程序从可运行池中选择一个线程获得CPU时间片后,被选中线程进入的状态。这也是线程进入运行状态的唯一一种方式。
3. 阻塞状态
阻塞状态是线程阻塞在进入synchronized关键字修饰的方法或代码块(获取锁)时的状态。