如何判断线程状态java_Java中的线程状态你都清楚知道有哪些吗?

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

cc84cf9b2bb2a4149933b9f54737a25a.png

#Java#关注我,不迷路。更多Java相关的知识等你和我一起来学!

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

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

663fdc3af58ae3356d3f8e8c95549b00.png线程状态

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

NEW:新的RUNNABLE:可运行的BLOCKED:阻塞的WAITING:等待的TIMED_WAITING:等待某个时间的TERMINATED:终止的

f912399a6936ccb458181a3432e7ffbe.png

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

NEW

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

RUNNABLE

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

BLOCKED

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

WAITING

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

能够使线程变为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爬虫实现爬取招聘网站信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值