跟着sleep看jvm线程变化

本文从sleep方法入手,探讨JVM线程的状态变化。通过分析JVM_Sleep方法,揭示了JavaThread对象如何代表JVM线程状态,包括_thread_in_vm, _thread_in_native和SLEEPING状态。Jstack工具显示的timed_waiting(sleep)状态,实际上是由于格式化输出的结果。总结了JVM中三种线程状态:Java规范状态、JVM代理的系统线程状态和JVM内部转换状态。" 79807560,7539379,f2fs文件系统初始化详解,"['文件系统', 'f2fs', '系统初始化']

jvm线程是维护了线程的状态。new,running,waiting,timed waiting,blocked,terminated。我们通过jstack等工具查看的时候,线程状态就是上面的一种。jvm本身是做了一种抽象,我们现在从一个典型的方法,来跟踪查看一下jvm内部又是怎么做状态变化的。

跟着sleep看jvm线程变化

 

sleep方法入手

   public static native void sleep(long millis) throws InterruptedException;

sleep是一个native 方法,我们通过jvm原来来进行跟着(源码来自openjdk11)。根据jni的规范,我们通过包名或者是jni的注册方式找到了对应的声明。

static JNINativeMethod methods[] = {
    {"start0",           "()V",        (void *)&JVM_StartThread},
    {"stop0",            "(" OBJ ")V", (void *)&JVM_StopThread},
    {"isAlive",          "()Z",        (void *)&JVM_IsThreadAlive},
    {"suspend0",         "()V",        (void *)&JVM_SuspendThread},
    {"resume0",          "()V",        (void *)&JVM_ResumeThread},
    {"setPriority0",     "(I)V",       (void *)&JVM_SetThreadPriority},
    {"yield",    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值