9

我的应用程序使用大量 Java 线程。我正在寻找对 JVM(版本 5 和 6)如何将 Java 线程映射到底层 Windows 线程的可靠理解。我知道有一个映射到 Solaris 线程的文档,但不是 Windows。

为什么 Sun 不发布此信息?

我想知道是否存在 1:1 映射,或者它是否因 JVM、-server 选项、工作负载等而异。

我知道我不“应该”关心,我应该编写正确的同步代码,但我继承了大量代码......

另外,有谁知道如何给 Windows 线程命名?

4

4 回答 4

7

没有适合您的文档,但是从任务管理器的线程列中,您可以非常可靠地猜测它会 1:1 映射到本机线程(您需要先在任务管理器中启用线程列)。

哦,差点忘了,你可以在这里下载jdk src ,自己看看。

于 2008-11-03T15:19:08.620 回答
1

映射是平台相关的,但是我发现了一个有趣的 vm 平台线程之间的比较(虽然可能有点旧)。底线是:你不需要知道。您可能更感兴趣的是了解绿色线程(如果您还不知道)。

至于命名问题:构造函数不允许您命名线程吗?或者您的意思是给它们命名并在某些 Windows 线程浏览器上查看它们的名称?

于 2008-11-03T15:52:48.053 回答
0

如何命名 Win32 线程

不幸的是,这似乎是不可能的,或者至少很难在 Windows JVM 中做到。

于 2008-11-03T15:54:38.860 回答
0

JVM 规范在这方面没有严格规定。它留给 JVM 实现者将 Java 主题映射到平台主题(Windows、Linux 等)。也很难相信 Java 线程和 OS 线程之间会有一对一的映射。

于 2012-10-17T11:40:30.233 回答