Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java tomcat 6上的编译器线程状态_Java_Multithreading - Fatal编程技术网

Java tomcat 6上的编译器线程状态

Java tomcat 6上的编译器线程状态,java,multithreading,Java,Multithreading,为tomcat进程运行线程转储时,我注意到以下几点: "CompilerThread0" daemon prio=10 tid=0x02b57400 nid=0xe0c waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE 据我所知,编译器线程(anynumber)是由JVM运行的,用于将字节码编译成本机代码,但我希望对此进行确认。 但我主要关心的是线程声明处于“等待状态”,但后来声明处于可运行状态。 我误解

为tomcat进程运行线程转储时,我注意到以下几点:

"CompilerThread0" daemon prio=10 tid=0x02b57400 nid=0xe0c waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE
据我所知,编译器线程(anynumber)是由JVM运行的,用于将字节码编译成本机代码,但我希望对此进行确认。 但我主要关心的是线程声明处于“等待状态”,但后来声明处于可运行状态。 我误解了什么?最后,[0x00000000]是什么意思


谢谢

所以请按字段进行细分:

  • “CompilerThread0”
    -Tomcat拥有用于编译JSP的编译器线程。JSP在第一次被访问时就被编译成java类
  • 守护进程
    -它是一个守护进程线程,以便在您选择退出时不会使您的应用保持活动状态
  • prio=10
    -最高优先级,以便JSP编译优先于其他请求
  • nid=0xe0c
    -实际上不知道
  • 等待条件[0x0000000]
    -线程当前正在阻塞,等待有人发出信号让它醒来并执行某些操作。与nid一样,我并不确定[0x000000]指的是什么。我怀疑它会保存一个对象监视器的地址,如果我们正在等待的话
  • java.lang.Thread.State:RUNNABLE
    -等待条件的线程仍被视为可运行
  • 首先让它感到困惑的一点是,线程是可运行的,即使它正在等待。这是违反直觉的,但它与JVM区分条件和对象监视器(例如,用于等待/通知的机制)有关


    希望有帮助

    这真的是违反直觉的,因为其他一些线程被标记为“等待条件”,并且处于等待(睡眠)状态。nid是操作系统本机进程id