java 线程
线程状态
1. 新创建线程
2. 可运行线程
调用 start
方法后, 线程处于 runnable 状态. 它可能在运行, 也可能没有运行(等待时间片).
3. 被阻塞线程和等待线程
- 当一个线程试图获取一个内部的对象锁(而不是
java.util.concurrent
库中的锁), 而该锁被其他线程持有, 则该线程进入 阻塞状态. - 当线程等待另一个线程通知调度器一个条件时, 它自己进入 等待状态. 例如, 调用
Object.wait
或Thread.join
方法, 或者是等待java.util.concurrent
库中的Lock
或Condition
时. - 当调用的是具有超时参数的方法, 导致线程进入的就是 计时等待状态, 例如
Thread.sleep
,Object.wait
,Thread.join
,Lock.tryLock
,Condition.await
的计时版.
4. 被终止的线程
- 因为
run
方法正常退出而自然结束; - 因为一个没有不好的异常终止了
run
方法而意外死亡.