有没有办法使用Java本机线程找出运行线程的处理器(在单个系统或多个系统上)?如果没有,是否有任何图书馆可以提供帮助?
答案 0 :(得分:2)
JVM的线程调度程序是特定于JVM的,因此没有“通用”解决方案。据我所知,没有任何可用的开箱即用,但可能使用:
thread-start
探针,其args[3]
为“本机/操作系统线程ID。这是主机操作系统分配的ID”答案 1 :(得分:0)
我从来没有听说过这样的电话,我非常怀疑有一个电话,因为它不是必需的,并且需要额外的平台专用代码。
答案 2 :(得分:0)
据我所知,标准JDK不支持它(至少达到JDK 6)。如果这是你真正需要的,你可能需要使用JNI执行一些本机调用。可以找到一个很好的例子here(虽然它不是你需要的,但我相信这是一个好的开始)。
顺便说一下,使用ThreadMXBean类(比如每个线程的CPU使用率),你可以从JDK获得很多其他信息,也许你可以找到你正在寻找的东西there。
答案 3 :(得分:0)
操作系统将在不同时间在不同处理器上调度线程。因此,即使您获得了每个线程在任何给定时刻运行的位置的快照,它也可能在毫秒内过时。
您要解决的问题是什么?也许你可以做你想做的事而不必知道这一点。