Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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_Jvisualvm - Fatal编程技术网

是否可以检查线程在JAVA中运行的处理器?

是否可以检查线程在JAVA中运行的处理器?,java,multithreading,jvisualvm,Java,Multithreading,Jvisualvm,我正在使用JAVA VisualVM评测我的程序,并获得以下关于线程执行的结果: 我不熟悉JAVA如何处理多线程,以下是我的问题: 1.grean条是否表明线程实际上是在相应的时间间隔内运行的?如果是这样的话,怎么可能同时运行的线程数大于处理器数(在我的笔记本电脑上是8个) 2.是否可以检查线程在哪个处理器上运行 非常感谢 可以检查线程在哪个处理器上运行吗 不确定VisualVM,但您可以使用获取java线程的OS线程ID。 然后,您可以通过操作系统提供的任何方法找出线程正在哪个处理器上运行。

我正在使用JAVA VisualVM评测我的程序,并获得以下关于线程执行的结果:

我不熟悉JAVA如何处理多线程,以下是我的问题:

1.grean条是否表明线程实际上是在相应的时间间隔内运行的?如果是这样的话,怎么可能同时运行的线程数大于处理器数(在我的笔记本电脑上是8个)

2.是否可以检查线程在哪个处理器上运行

非常感谢

可以检查线程在哪个处理器上运行吗

不确定VisualVM,但您可以使用获取java线程的OS线程ID。

然后,您可以通过操作系统提供的任何方法找出线程正在哪个处理器上运行。

IIRC绿色表示“可运行”,即表示:它已准备好在CPU上运行,并且可能正在实际运行。换句话说:如果核心可用,那么它将实际运行,但取决于操作系统调度程序。另外:超线程意味着您实际运行的线程数通常是内核数的两倍。谢谢您的回答!如果我可能会问,如果在VisualVM中不可能,那么检查线程在哪个处理器上运行如何?是否有其他方法可以做到这一点?这是操作系统特有的。而且,除非操作系统提供了将特定线程固定到特定处理器的方法,否则您应该期望它会改变。。。不可预测的。。。取决于系统负载等。但请阅读以下内容: