Sun JVM如何将Java线程映射到Windows线程?

时间:2008-11-03 15:00:24

标签: java windows multithreading jvm

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

为什么Sun不发布此信息?

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

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

另外,有没有人知道如何为Windows线程命名?

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

映射是依赖于平台的,但是我发现vm的平台线程之间有一个有趣的comparison(尽管可能有点旧)。底线是:你不需要知道。您可能更感兴趣的是了解green threads(如果您还不知道)。

至于命名问题:constructor是否允许您命名线程?或者你的意思是在某些Windows线程浏览器上命名并查看其名称?

答案 2 :(得分:0)

How to name a Win32 thread

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

答案 3 :(得分:0)

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