来自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=396
GPS 平台, 网站建设, 软件开发, 系统运维, 找森大网络科技!
http://cnsendnet.taobao.com/
线程的 5 种状态
1, 新建状态(New): 新创建了一个线程对象.
2, 就绪状态 (Runnable): 线程对象创建后, 其他线程调用了该对象的 start() 方法. 该状态的线程位于可运行线程池中, 变得可运行, 等待获取 CPU 的使用权.
3, 运行状态(Running): 就绪状态的线程获取了 CPU, 执行程序代码.
4, 阻塞状态(Blocked): 阻塞状态是线程因为某种原因放弃 CPU 使用权, 暂时停止运行. 直到线程进入就绪状态, 才有机会转到运行状态. 阻塞的情况分三种:
(一), 等待阻塞: 运行的线程执行 wait()方法, JVM 会把该线程放入等待池中.
(二), 同步阻塞: 运行的线程在获取对象的同步锁时, 若该同步锁被别的线程占用, 则 JVM 会把该线程放入锁池中.
(三), 其他阻塞: 运行的线程执行 sleep()或 join()方法, 或者发出了 I/O 请求时, JVM 会把该线程置为阻塞状态. 当 sleep()状态超时, join()等待线程终止或者超时, 或者 I/O 处理完毕时, 线程重新转入就绪状态.
5, 死亡状态 (Dead): 线程执行完了或者因异常退出了 run() 方法, 该线程结束生命周期.
阻塞: 线程 A 等待线程 B 的数据, 线程 B 等待线程 A 的数据, 互相等待, 就会陷入阻塞, 这也是一种线程阻塞.
阻塞状态是正在运行的线程遇到某个特殊情况. 例如, 延迟, 挂起, 等待 I/O 操作完成等. 进入阻塞状态的线程让出 CPU, 并暂时停止自己的执行. 线程进入阻塞状态后, 就一直等待, 直到引起阻塞的原因被消除, 线程又转入就绪状态, 重新进入就绪队列排队.
来自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=396
GPS 平台, 网站建设, 软件开发, 系统运维, 找森大网络科技!
http://cnsendnet.taobao.com/
来源: http://www.bubuko.com/infodetail-3424334.html