Java并发编程系列之二:线程状态
2015-12-04 22:01
253 查看
线程的状态一共有6种,在任意时刻线程的状态只能是其中的一种。正确理解线程的状态有助于我们更容易理解线程。具体的线程状态如下:
这六种状态是可以相互进行转化的,下面是具体的转化过程:
可以看到,线程创建之后,调用start()方法开始运行。当线程执行wait()方法之后,线程进入等待状态。进入等待状态的线程需要依靠其他线程的通知才能够返回到运行状态,而超时等待状态相当于在等待状态基础上增加了时间的限制,就是说,超过了设定的时间限制就会返回到运行状态。当线程调用同步方法的时候,在没有获取到锁的情况下,线程会进入阻塞状态。线程在执行Runnable的run()方法之后会进入到终止状态。
状态名称 | 说明 |
---|---|
NEW | 初始状态,线程被构建,但是还没有调用start方法 |
RUNNING | 运行状态 |
BLOCKED | 阻塞状态,表示线程阻塞于锁 |
WAITING | 等待状态,表示线程线程进入等待状态,进入该状态后需要其他线程做出通知动作 |
TIME_WAITING | 超时等状态状态,该状态与WAITING不同,它是可以在指定时间内自行返回的 |
TERMINATED | 终止状态,表示当前线程已经执行完毕 |
可以看到,线程创建之后,调用start()方法开始运行。当线程执行wait()方法之后,线程进入等待状态。进入等待状态的线程需要依靠其他线程的通知才能够返回到运行状态,而超时等待状态相当于在等待状态基础上增加了时间的限制,就是说,超过了设定的时间限制就会返回到运行状态。当线程调用同步方法的时候,在没有获取到锁的情况下,线程会进入阻塞状态。线程在执行Runnable的run()方法之后会进入到终止状态。
相关文章推荐
- struts2 标签 --<<s:url >
- 【java web】--JSP原理详细剖析
- Myeclipse 2015 stable 2.0 完美破解方法
- eclipse中导入opencv
- 富文本编辑器在Java中使用
- 20个非常有用的Java程序片段
- Java编写Telnet客户端,连接到Windows的Telnet服务器,执行命令和批处理脚本
- java 字节数组取反
- Struts2学习——(五)ModelDriven使用方法及机制学习
- java 非法字符: \65279
- 用eclipse创建servlet小程序
- Java [Leetcode 39]Combination Sum
- java获取系统时间比实际时间少了8个小时的解决方法
- Java中的拦截器、过滤器、监听器
- Java中重载和重写的区别
- Jlabel实现内容自动换行
- JAVA-计算器
- struts2必备包
- Java内部类的一些总结
- eclipse打包成apk后出现的错误(please open wifi for debuging )