多线程的6种状态
New(新建状态)
Runnable(可运行状态)
Blocked(阻塞状态)
Waiting(等待状态)
Timed waiting(计时等待状态)
Terminated(终止状态)
New 新建线程状态
概述:线程处于new的状态时,是还没有开始运行的。例如 new Thread( E ),此时的状态就处于新建。
Runnable 可运行状态
概述:调用start方法之后,线程就处于可运行(runnable)状态。
为什么是“可运行”状态,而不是“运行”状态?因为在实际的任意时刻,一个可运行的线程,可能在运行状态,也可能不在运行。(量子力学?)
注:线程运行时可能暂停,比如当一个线程用完一个时间片时,操作系统中的 抢占式调度系统
会剥夺此线程的运行权,然后交给另一个线程。
Blocked and Waiting 阻塞与等待状态
概述:当线程处于阻塞与等待状态时是不运行任何代码的,需要由 线程调度器
重新唤醒/激活。
进入阻塞与等待状态的三种情况
1. 当线程申请获得内部的对象锁的时候,若此锁正在被占用,此线程就会进入阻塞状态。
2. 当一个线程等待另一个线程被 线程调度器
唤醒时,就会进入等待状态。
3. 若方法中包含 超时参数
,这些方法会让线程进入计时等待状态。
Terminated 终止状态
终止原因:
1. run方法正常退出。
2. 没有被捕获的异常终止了run方法。