我的应用程序使用大量Java线程。我正在寻找一个可靠的理解JVM(版本5和6)如何将Java线程映射到底层Windows线程。我知道有一个用于映射到Solaris线程的文档,但不是Windows。
为什么Sun不发布此信息?
我想知道是否存在1:1映射,或者它是否因JVM,-server选项,工作负载等因素而异。
我知道我不应该“关心”,我应该正确编写同步代码,但我继承了大量的代码......
另外,有没有人知道如何为Windows线程命名?
答案 0 :(得分:6)
没有适合您的文档,但是从任务管理器的“线程”列中,您可以非常可靠地猜测它将1:1映射到本机线程(您需要先在任务管理器中启用“线程”列)
哦,差点忘了,你可以下载jdk src here看看自己。
答案 1 :(得分:1)
映射是依赖于平台的,但是我发现vm的平台线程之间有一个有趣的comparison(尽管可能有点旧)。底线是:你不需要知道。您可能更感兴趣的是了解green threads(如果您还不知道)。
至于命名问题:constructor是否允许您命名线程?或者你的意思是在某些Windows线程浏览器上命名并查看其名称?
答案 2 :(得分:0)
不幸的是,这似乎是不可能的,或者至少在Windows JVM中很难做到。
答案 3 :(得分:0)
JVM规范在这方面没有严格说明。它留给JVM实现者将Java theads映射到平台theads(Windows,Linux等)。另外很难相信Java线程和OS线程之间会有一对一的映射。