2.基础:线程的生命周期状态

Java 线程的状态可以使用监控工具查看,也可以通过Thread.getState()调用来获取。Thread.getState() 的返回值类型Thread.State是一个枚举类型(Enum) 。Thread.State 所定义的线程状态包括以下几种。
NEW: 一个已创建而未启动的线程处于该状态。由于一个线程实例只能够被启动一次,因此一个线程只可能有一次处于该状态。
RUNNABLE: 该状态可以被看成一个复合状态。它包括两个子状态:READY和RUNNING 。前者表示处于该状态的线程可以被线程调度器(Scheduler) 进行调度而使之处于RUNNING 状态。后者表示处于该状态的线程正在运行,即相应线程对象的run方法所对应的指令正在由处理器执行。
BLOCKED: 一个线程发起一个阻塞式I/O (Blocking I/O) 操作后, 或者申请一个由其他线程持有的独占资源(比如锁)时,相应的线程会处于该状态。处于BLOCKED状态的线程并不会占用处理器资源。当阻塞式I/0 操作完成后,或者线程获得了其申请的资源,该线程的状态又可以转换为RUNNABLE。
WAITING: 一个线程执行了某些特定方法之后就会处于这种等待其他线程执行另外一些特定操作的状态。
TIMED_ WAITING: 该状态和WAITING 类似,差别在于处于该状态的线程并非无限制地等待其他线程执行特定操作,而是处于带有时间限制的等待状态。当其他线程没有在指定时间内执行该线程所期望的特定操作时,该线程的状态自动转换为RUNNABLE 。
TERMINATED: 已经执行结束的线程处于该状态。由于一个线程实例只能够被启动一次,因此一个线程也只可能有一次处于该状态。Thread.run()正常返回或者由于抛出异常而提前终止都会导致相应线程处于该状态。

全部评论

相关推荐

10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务