很遗憾,因您的浏览器版本过低导致无法获得最佳浏览体验,推荐下载安装谷歌浏览器!

Java中的线程状态你都知道有哪些吗?

2020-02-11  来自: Java培训 浏览次数:4

对于不少Java学习者来说,线程有几种状态这个问题可能还不是很清楚,网上的各种博客的说法也是大相径庭。今天就来带大家一起揭开事实的真相,彻底搞明白线程到底有几种状态。

对于Java中线程究竟有几种状态这个问题,首先大家要学会在哪里找答案。由于在Java中,java.lang.Thread就是Java对线程的实现,所以很容易想到答案可能会在Thread类的注释中。

查看源码之后,果不其然,答案就在这里,请大家看下面的源码片段:

线程状态

怎么样,是不是一目了然?答案就是6种。如果有点英语基础的朋友们就可以大概了解它们的意思了。

java

NEW:新的

RUNNABLE:可运行的

BLOCKED:阻塞的

WAITING:等待的

TIMED_WAITING:等待某个时间的

TERMINATED:终止的

接下来就让我们分别来看看它们各自的详细说明:

NEW

该状态描述的是线程已经被new出来,但还未启动。NEW这种状态对于每个线程来说,只可能有一次处于该状态,因为一个线程实例只能够被启动一次。

RUNNABLE

如果处于NEW状态的线程调用了start方法,就会处于RUNNABLE状态。但是请注意,线程有可能正在运行,也有可能在等待运行(具体什么时候运行要由线程调度器来安排)!

BLOCKED

当线程申请一个由其他线程持有的独占资源(比如锁)时就会处于该状态。当线程不再阻塞时,状态会从BLOCKED转为RUNNABLE

WAITING

当一个线程执行了某些特定的方法后就会处于这种状态,也就是等待其他线程执行另外一些操作的状态。

java

能够使线程变为WAITING状态的几种方法是:

Object.wait()

Thread.join()

LockSupport.park(Object blocker)

TIMED_WAITING

该状态类似于上面的WAITING,只不过WAITING是无限制地等待,而TIMED_WAITING只等待一个特定的时间。时间一到,处于TIMED_WAITING状态的线程就会转为RUNNABLE。

TERMINATED

当线程执行完毕后会处于该状态。和NEW状态一样,每个线程实例也只可能有一次TERMINATED状态。不管是run方法正常结束还是由于抛出异常而提前终止,都会导致线程处于该种状态。

以上就是Java中线程有几种状态的介绍,希望大家都能够吸收掉这块的知识点,对于后续的Java并发编程是非常重要的。只有搞清楚线程的各个状态的特点,才能理清复杂的多线程编程。

更多的java知识学习,请点击下方报名。

java



关键词: java   java线程状态        

Java培训,专营 JAVA培训 JAVA工程师 Java大数据 JAVA就业 JavaEE分布 JAVA框架 等业务,有意向的客户请咨询我们,联系电话:075526075552

CopyRight © 版权所有: Java培训 网站地图 XML


扫一扫访问移动端

在线客服