多线程之线程状态

1. 线程状态

线程可以有6中状态:

New(新创建)
Runnable(可运行)
Blocked(被阻塞)
Waiting(等待)
Timed Waiting(计时等待)
Terminated(被终止)

多线程之线程状态_第1张图片
线程状态转换
1.1 可运行线程

一旦调用start方法,线程就处于runnable状态。该线程可能正在运行也可能没有运行。

1.2 被阻塞线程和等待线程

当线程处于被阻塞或等待状态时,它暂时不活动。

  • 当一个线程获取一个内部的对象锁(而不是java.util.concurrent库中的锁),而该锁被其他线程持有,则该线程进入阻塞状态。当所有其他线程释放该锁,并且线程调度器允许本线程持有它的时候,该线程将变成非阻塞状态。
  • 当线程等待另一个线程通知调度器一个条件时,它自己进入等待状态。
  • 有几个方法有一个超时参数。通知它们导致线程进入计时等待状态。
1.3 被终止的线程

线程因如下两个原因被终止:

  • 因为run方法正常退出而自然死亡;
  • 因为一个没有捕获的异常终止了run方法而意外死亡。

你可能感兴趣的:(多线程之线程状态)