线程的状态
任何线程一般都具有五种状态 : 创建 , 就绪 , 运行 , 阻塞 , 死亡
1.创建状态:在程序中用构方法创建一个相程对象之后 , 新的线程对象就处于创建状态 . 也就是当用new操作符创建一个线程时, 例如new Thread(th).
2.就绪状态 : 线程创建之后 , 就可以通过调用start()方法启动线程 , 即进入就绪状态
处于就绪状态的线程并不一定立即运行run()方法,线程还必须同其他线程竞争CPU时间 , 也就是抢CPU资源 , 谁抢到谁就运行。因为在单CPU的计算机系统中,不可能同时运行多个线程,一个时刻只有一个线程处于运行状态。因此此时可能有多个线程处于就绪状态。对多个处于就绪状态的线程是由Java运行时系统的线程调度程序(thread scheduler)来调度的。
3.运行状态 : 当就绪状态的线程获得CPU资源时 , 即可进入运行状态.
4.阻塞状态 : 一个正在运行的线程因某种原因不能继续运行时 , 进入阻塞状态. 我所理解的就是一个线程运行到一半的时候不能继续运行了 , 可能是CPU资源被其他线程抢走了.
可能使线程暂停执行的条件如:
1>线程通过调用sleep方法进入睡眠状态;
2>线程调用一个在I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者;
3>线程试图得到一个锁,而该锁正被其他线程持有;
4>线程在等待某个触发条件;
5>通过调用wait()方法 , 使线程等待
6>通过调用yield()方法 , 线程显示出让CPU控制权
5.死亡状态 : 一个线程的run()方法运行完毕 , 线程则进入死亡状态,线程进入死亡装态 . 处于死亡状态的线程不具有运行的能力.
有两个原因会导致线程死亡:
1) run方法正常退出而自然死亡,
2) 一个未捕获的异常终止了run方法而使线程猝死.

浙公网安备 33010602011771号