讲一讲线程状态

java代码执行过程中,jvm是通过创建线程来执行代码的,每个线程都有自己的本地方法栈,虚拟机栈及程序计数器,共享方法区和堆

而线程执行的过程中有六种状态

New 表示线程被创建

Runnable 表示线程已经处于运行状态,这里的运行状态是相对jvm来说的,其实在cpu底层有可能是就绪状态也可能是运行状态

Blocked 表示阻塞状态

Waiting 表示等待状态

Time_Waiting  表示定时等待状态

Terminated 表示执行结束

 

当线程被创建的时候是New状态,当线程被start的时候会是Runnable状态,而当遇上synchronized等等待锁的时候会切换成blocked阻塞状态,只有抢到锁了才会恢复为runnable状态,而当执行到wait之类的等待方法的时候会进入waiting等待状态,只有被notify等唤醒后才会恢复到runnable,而当执行到sleep之类的设置等待时间的方法的时候,会进入time_waiting状态,只有等待够指定的时间才会自行唤醒或者是被通知唤醒恢复到runnable,最后执行结束或者异常终止时就会切换成termniate状态.

 

我们通过jstack可以dump出jvm运行期间各个线程的执行状态,通过对线程状态的认识,我们可以更清晰的理解各个线程的状态信息.这为多线程执行时候的分析提供了基础。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值