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

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

为什么Sun不公布这些信息?

我想知道是否有1:1的映射,或者是否因JVM,服务器选项,工作负载等而异。

我知道我不是“应该”照顾,我应该正确地写同步代码,但我inheritance了大量的代码…

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

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

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

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

至于命名的问题:不是构造函数允许你命名一个线程吗? 或者你的意思是命名他们,并在一些Windows线程浏览器上查看他们的名字?

如何命名一个Win32线程

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

JVM规范在这方面没有严格的说什么。 它的左侧是JVM实现者,用来将Java平台映射到平台(Windows,Linux等)。 也很难相信Java线程和OS线程之间会有一对一的映射。