Мое приложение использует множество потоков Java. Я ищу надежное понимание того, как JVM (версии 5 и 6) сопоставляет потоки Java с базовыми потоками Windows. Я знаю, что есть документ для сопоставления потоков Solaris, но не Windows.
Почему Sun не публикует эту информацию?
Я хочу знать, есть ли отображение 1: 1 или оно зависит от JVM, параметра -server, рабочей нагрузки и т. д. И т. Д.
Я знаю, что меня "не должно" волновать, я должен писать правильно синхронизированный код, но я наследую большой объем кода ...
Кроме того, кто-нибудь знает, как давать имена потокам Windows?




У вас нет документа, но из столбца Threads в диспетчере задач вы можете довольно надежно догадаться, что он отображает 1: 1 на собственные потоки (вам сначала нужно включить столбец Threads в диспетчере задач).
Ой, чуть не забыл, можешь скачать jdk src здесь и посмотреть сам.
Отображение зависит от платформы, однако я обнаружил интересный сравнение между потоками платформы для виртуальной машины (хотя, вероятно, немного устарел). Суть в том, что вам не нужно знать. Что вам, вероятно, больше интересно, так это узнать о зеленые нити (если вы еще не знаете).
Что касается вопроса об именовании: разве конструктор не позволяет вам давать имя потоку? Или вы имеете в виду называть их и просматривать их имена в каком-нибудь браузере веток Windows?
К сожалению, кажется, что это невозможно или, по крайней мере, очень сложно сделать внутри Windows JVM.
Вы всегда можете обернуть этот код JNI, если хотите его использовать.
Возможно, вам будет сложно найти идентификатор потока Windows - он не совпадет с идентификатором потока, возвращаемым JVM. Но мне кажется, что это то, что вам вообще не нужно делать на Java.
Недавно я имел дело с кодом JNI, который создает Win32 AccessTokens, и, возможно, эти токены работают только в том потоке ОС, в котором они были созданы .. хотя не уверен ..
Спецификация JVM ничего строго по этому поводу не говорит. Его оставлено разработчикам JVM для сопоставления Java-theads с платформой (Windows, Linux и т. д.). Также трудно поверить, что между потоками Java и потоками ОС будет однозначное соответствие.
Я был бы удивлен, если бы он сделал что-нибудь более продвинутое, чем планирование 1: 1.