Java线程:线程状态
2015-12-21 16:53
337 查看
线程可以创建6状态: New()新创建、Runnable(可运行)、Blocked(被阻塞)、 Waiting(等待)、Timed waiting(计时等待)、Terminated(被终止) [b]1 新建线程[/b] 当用new操作符创建一个线程时,如new Thread(r),该线程还没有开始运行。这意味着它的状态是new。当一个线程处于此状态时,程序还没开始执行线程中的代码。在线程运行之前还有一些基础工作要做。 [b]2 可运行线程[/b] 一旦调用start()方法,线程就处于runnable状态,但是却不必保持运行。运行中的线程中断,目的是为了让其他线程获得运行机会。抢占式调度系统给每一个可运行线程一个时间片来执行任务。当时间片用完,会剥夺该线程的运行权,并给另一个线程运行机会。当选择下一个进程时,会考虑线程的优先级。 [b]3 被阻塞线程和等待线程[/b] 如上图所示,当一个线程试图获取一个内部对象锁,而该锁被其他线程持有,则该线程进入堵塞状态。当所有其他线程释放该锁,并且线程调度器允许本线程持有时,变为非堵塞状态。 当线程等待另一个线程通知调度器一个条件时,自己进入等待状态。有几个方法有一个超时参数。调用它们导致线程进入计时等待状态。这一状态将一直保持到超时期满或者接收到适当的通知。带有超时参数的方法由Thread.sleep, Object.wait, Thread.join, Lock.tryLock, Condition.await的计时版。 当一个堵塞或等待的线程被重新激活时(例如,因超时期满或成功获得了一个锁),调度器会检查是否比当前运行的线程有更高的优先级。 [b]4 被终止的线程[/b] 线程被终止的原因: 1) run方法正常退出而自然死亡。 2) 因为一个没有捕获的异常终止了run方法而导致意外死亡。
相关文章推荐
- Java程序中作业调度-Quartz
- java死锁
- Java生成公私钥对
- Java Web系列:JAAS认证和授权基础
- java web 项目中定时器的写法
- java中关于数组转换成字符串方法
- Struts2值栈和ognl表达式
- java中jar包内的类访问jar包内部的资源文件的路径问题
- JAVA过滤器,实现登陆权限限制
- java随机生成6位数字
- 玩转Eclipse
- java cxf 发布和访问
- 把OC里的字典转为java格式里的字符串
- IOS 基于APNS消息推送原理与实现(JAVA后台)
- java 将PDF 转化为图片
- Java笔记——java.util.Map.Entry
- Java实现自定义对象的排序
- java中Map转换List
- Java中从终端录入数据的方式
- java性能优化读书笔记之三《程序优化===字符串优化》