我的应用程序使用大量 Java 线程。我正在寻找对 JVM(版本 5 和 6)如何将 Java 线程映射到底层 Windows 线程的可靠理解。我知道有一个映射到 Solaris 线程的文档,但不是 Windows。
为什么 Sun 不发布此信息?
我想知道是否存在 1:1 映射,或者它是否因 JVM、-server 选项、工作负载等而异。
我知道我不“应该”关心,我应该编写正确的同步代码,但我继承了大量代码......
另外,有谁知道如何给 Windows 线程命名?
我的应用程序使用大量 Java 线程。我正在寻找对 JVM(版本 5 和 6)如何将 Java 线程映射到底层 Windows 线程的可靠理解。我知道有一个映射到 Solaris 线程的文档,但不是 Windows。
为什么 Sun 不发布此信息?
我想知道是否存在 1:1 映射,或者它是否因 JVM、-server 选项、工作负载等而异。
我知道我不“应该”关心,我应该编写正确的同步代码,但我继承了大量代码......
另外,有谁知道如何给 Windows 线程命名?
没有适合您的文档,但是从任务管理器的线程列中,您可以非常可靠地猜测它会 1:1 映射到本机线程(您需要先在任务管理器中启用线程列)。
哦,差点忘了,你可以在这里下载jdk src ,自己看看。
不幸的是,这似乎是不可能的,或者至少很难在 Windows JVM 中做到。
JVM 规范在这方面没有严格规定。它留给 JVM 实现者将 Java 主题映射到平台主题(Windows、Linux 等)。也很难相信 Java 线程和 OS 线程之间会有一对一的映射。