thread相关

Thread相关学习之三- JavaThreadState 和

2019-02-18  本文已影响4人  AlanKim
JavaThreadState 和 JVMTIThreadState 转换

下面接着看下jvmti.xml中对于JavaThreadState 和 JVMTIThreadState的转换定义:

The following definitions are used to convert <jvmti/> thread state to <code>java.lang.Thread.State</code> style states.
    <constants id="jvmtiJavaLangThreadState" label="java.lang.Thread.State Conversion Masks" kind="bits">
      <constant id="JVMTI_JAVA_LANG_THREAD_STATE_MASK"
                     num="JVMTI_THREAD_STATE_TERMINATED | JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT">
        Mask the state with this before comparison
      </constant>
      <constant id="JVMTI_JAVA_LANG_THREAD_STATE_NEW"
                     num="0">
        <code>java.lang.Thread.State.NEW</code>
      </constant>
      <constant id="JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED"
                     num="JVMTI_THREAD_STATE_TERMINATED">
        <code>java.lang.Thread.State.TERMINATED</code>
      </constant>
      <constant id="JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE"
                     num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE">
        <code>java.lang.Thread.State.RUNNABLE</code>
      </constant>
      <constant id="JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED"
                     num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER">
        <code>java.lang.Thread.State.BLOCKED</code>
      </constant>
      <constant id="JVMTI_JAVA_LANG_THREAD_STATE_WAITING"
                     num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY">
        <code>java.lang.Thread.State.WAITING</code>
      </constant>
      <constant id="JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING"
                     num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT">
        <code>java.lang.Thread.State.TIMED_WAITING</code>
      </constant>
    </constants>

继续用表格处理,对比下:

序号 JavaThreadState JVMThreadState Value(10进制)
1 java.lang.Thread.State.NEW 0
2 java.lang.Thread.State.TERMINATED JVMTI_THREAD_STATE_TERMINATED 0x0002 = 2
3 java.lang.Thread.State.RUNNABLE JVMTI_THREAD_STATE_ALIVE 按位或 JVMTI_THREAD_STATE_RUNNABLE 0x0001 按位或 0x0004 = 5
4 java.lang.Thread.State.BLOCKED JVMTI_THREAD_STATE_ALIVE 按位或JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER 0x0001 按位或0x0400 = 1025
5 java.lang.Thread.State.WAITING JVMTI_THREAD_STATE_ALIVE 按位或 JVMTI_THREAD_STATE_WAITING 按位或JVMTI_THREAD_STATE_WAITING_INDEFINITELY 0x0001 按位或 0x0080 按位或 0x0010 = 145
6 java.lang.Thread.State.TIMED_WAITING JVMTI_THREAD_STATE_ALIVE 按位或JVMTI_THREAD_STATE_WAITING 按位或JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT 0x0001 按位或 0x0080 按位或 0x0020 = 161
上一篇 下一篇

猜你喜欢

热点阅读