Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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

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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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线程转储中线程的顺序是什么?_Java_Multithreading_Stack - Fatal编程技术网

什么';Java线程转储中线程的顺序是什么?

什么';Java线程转储中线程的顺序是什么?,java,multithreading,stack,Java,Multithreading,Stack,什么定义了线程转储中线程的顺序 当我们在java中进行线程转储时。我试图理解java程序的行为。(jdk8) 使用jdk\bin\jstack命令执行线程转储 小例子: 2019-06-19 09:37:56 全线程转储Java热点(TM)64位服务器VM(25.161-b12) 模式): “螺纹xyz”#8317 prio=5 跟踪…xyz “螺纹abc”#8316 prio=5 追踪……abc 我想了解是什么决定了线程转储中线程thread\u abc之后的输出顺序。如果您想比较线程转储(甚

什么定义了线程转储中线程的顺序

当我们在java中进行线程转储时。我试图理解java程序的行为。(jdk8)

使用
jdk\bin\jstack
命令执行线程转储

小例子: 2019-06-19 09:37:56

全线程转储Java热点(TM)64位服务器VM(25.161-b12) 模式):

“螺纹xyz”#8317 prio=5

跟踪…xyz

“螺纹abc”#8316 prio=5

追踪……abc


我想了解是什么决定了线程转储中线程
thread\u abc
之后的输出顺序。

如果您想比较线程转储(甚至只是看看其中发生了什么),最简单的方法是创建转储并使用免费的在线分析器,如或。他们将其可视化的方式通常有助于找到热点

什么定义了线程转储中线程的顺序

我怀疑这个问题的答案在很大程度上取决于JDK版本,甚至可能取决于操作系统的实现

查看Linux下的
java-1.7.0-openjdk-1.7.0.141
java-1.8.0-openjdk-1.8.0.131
版本,堆栈跟踪似乎是按线程id按相反顺序排序的

"foo2" #11 prio=5 os_prio=0 tid=0x00007f595010c800 ...
"foo" #10 prio=5 os_prio=0 tid=0x00007f595010b000 ...
"Service Thread" #9 daemon prio=9 os_prio=0 tid=0x00007f59500e5000 ...
"C1 CompilerThread3" #8 daemon prio=9 os_prio=0 tid=0x00007f59500d8000 ...
"C2 CompilerThread2" #7 daemon prio=9 os_prio=0 tid=0x00007f59500d6000 ...
"C2 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x00007f59500d4000 ...
"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x00007f59500c6800 ...
"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007f59500c4800 ...
"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007f595009b000 ...
"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007f5950096800 ...
"main" #1 prio=5 os_prio=0 tid=0x00007f5950008000 ...
"VM Thread" os_prio=0 tid=0x00007f595008c800 ...
"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f595001d800 ...
"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f595001f000 ...
...
"VM Periodic Task Thread" os_prio=0 tid=0x00007f59500e8000 ...
请注意,列表中有许多“内部”线程似乎根本没有编号


另外,在这些版本的java中,线程id是线程构造函数中完成的一个同步的long++。

我很好奇为什么顺序对您很重要?你想在线程转储中找到什么?谢谢你的编辑。我试图比较两个线程转储,进程的良好状态和不良状态。我猜最忙的线程在顶部,但不确定。谢谢。这些都非常有用。esp比较差异。但是在我的例子中,线程转储几乎相同,除了顺序。谢谢,这是有意义的。我在这里找到了更多的分析