Java 线程状态
来源:互联网 发布:怎样开通淘宝网店 编辑:程序博客网 时间:2024/05/29 11:12
一个线程总共有以下四个状态:
1、新建(New) :
当线程被创建的时候,它会短暂的处于这个状态。此时它已经分配了必需的系统资源,并执行了初始化。此刻线程已经有资格获得CPU时间了,之后调度器将把这个线程转变为可运行状态或者阻塞状态。
2、就绪(Runnable):
在这种状态下,只要调度器把时间片段分配给线程,线程就可以运行。也就是说,在任意时刻,线程可以运行也可以不运行。只要调度器把时间分配给线程,它就可以运行,这不同于以下的阻塞和死亡状态。
3、阻塞(Blocked):
线程能够运行,但有某个条件阻止它的运行。当线程处于阻塞状态的时候,调度器将忽略此线程,不会分配任何CPU时间片段给此线程。直到此线程重新进入了就绪的状态,它就可以执行操作了。
4、死亡(Dead):
处于死亡或者终止状态的线程将不再是可调度的,并且再也不会得到CPU时间,它的任务已经结束,或不再运行的。任务死亡的通常方式是从run()方法返回,但是任务的线程还可以被中断。
关于线程进入阻塞状态的原因可能是如下:
1):通过调用sleep()使得任务进入休眠状态,在这种情况下,任务在制定的时间内是不会运行的。
2):通过调用wait()方法使得线程挂起。知道线程得到了notify()或者notifyAll()消息,线程才会进入就绪的状态。
3):任务在等待某个输入/输出完成。
4):任务试图在某个对象上调用其同步控制方法,但是对象锁不可用,因为另一个任务已经获取了这个锁,当前任务只能处于阻塞状态,等待对象锁释放。
参考:
《Thinking In Java》
- Java线程:线程状态
- Java线程与线程状态
- java线程状态管理
- Java 线程状态
- java线程(一) 状态
- Java线程状态
- Java线程状态转换
- Java多线程:线程状态
- Java 线程 状态
- java多线程-线程状态
- java线程状态
- java线程状态
- JAVA线程状态
- java 线程状态转换
- java线程的状态
- Java多线程:线程状态
- Java中的线程状态
- Java 线程状态
- 自己创建map结构体 sort + cmp
- 硬币问题java实现
- 从零开始 :Ubuntu 下编译安装ejabberd14.07
- Java中杨辉三角的一种方法
- STL的内存分配器
- Java 线程状态
- 几个android小错误
- JSP与Servlet的关系
- Vmware+ Ubuntu 上网
- ModBus RTU通讯协议与ModBus通讯协议有什么区别
- IT world
- C++四种强制类型转换
- Web_JavaScript_JSON_JSON基础知识;
- hibernate模拟