线程五个状态:
新建状态new
就绪状态 Runnable
运行状态Running
阻塞Blocked
死亡状态 Terminated
新建状态:创建一个线程对象后,该线程对象就处于新建状态,不能运行,JAVA虚拟机分配
了内存
就绪状态:调用start()方法后就进入就绪状态,有执行资格,等待执行权
运行状态:有执行资格执行权后就处于正在运行的状态,占用CPU时间片
阻塞状态:正在执行的线程在特殊情况下,会放弃CPU的使用权,进入阻塞状态
1、锁被其他线程持有,等锁被释放后获取锁 进入就绪状态
2、线程调用一个阻塞式的IO方法时,线程进入阻塞,要进入就绪状态,必须等到
这个阻塞IO方法返回值
3、线程调用wait()方法,进入阻塞状态,想进入就绪状态就必须用
notify()/notifyAll()唤醒
4、线程调用Thread.sleep(time)方法后也进入阻塞状态,必须等到time结束进入就
绪状态
5、一个线程调用另一个线程的join()方法时,当前线程会进入阻塞状态,必须
等另一个加入的线程执行完成后此线程进入就绪状态
重点:线程从阻塞状态只能进入就绪状态,不能直接进入运行状态,重新进入运行池,等待
系统的调度。
死亡状态:线程的run()方法执行完,或者线程抛出一个未捕获的异常(Exception)/错误(Error) 死亡线程不能再转换到其他状态
|
|