Как Sun JVM сопоставляет потоки Java с потоками Windows?

Мое приложение использует множество потоков Java. Я ищу надежное понимание того, как JVM (версии 5 и 6) сопоставляет потоки Java с базовыми потоками Windows. Я знаю, что есть документ для сопоставления потоков Solaris, но не Windows.

Почему Sun не публикует эту информацию?

Я хочу знать, есть ли отображение 1: 1 или оно зависит от JVM, параметра -server, рабочей нагрузки и т. д. И т. Д.

Я знаю, что меня "не должно" волновать, я должен писать правильно синхронизированный код, но я наследую большой объем кода ...

Кроме того, кто-нибудь знает, как давать имена потокам Windows?

Я был бы удивлен, если бы он сделал что-нибудь более продвинутое, чем планирование 1: 1.

JesperE 03.11.2008 18:23
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
9
1
5 463
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

У вас нет документа, но из столбца Threads в диспетчере задач вы можете довольно надежно догадаться, что он отображает 1: 1 на собственные потоки (вам сначала нужно включить столбец Threads в диспетчере задач).

Ой, чуть не забыл, можешь скачать jdk src здесь и посмотреть сам.

Отображение зависит от платформы, однако я обнаружил интересный сравнение между потоками платформы для виртуальной машины (хотя, вероятно, немного устарел). Суть в том, что вам не нужно знать. Что вам, вероятно, больше интересно, так это узнать о зеленые нити (если вы еще не знаете).

Что касается вопроса об именовании: разве конструктор не позволяет вам давать имя потоку? Или вы имеете в виду называть их и просматривать их имена в каком-нибудь браузере веток Windows?

Как назвать поток Win32

К сожалению, кажется, что это невозможно или, по крайней мере, очень сложно сделать внутри Windows JVM.

Вы всегда можете обернуть этот код JNI, если хотите его использовать.

James Van Huis 03.11.2008 18:59

Возможно, вам будет сложно найти идентификатор потока Windows - он не совпадет с идентификатором потока, возвращаемым JVM. Но мне кажется, что это то, что вам вообще не нужно делать на Java.

matt b 03.11.2008 23:22

Недавно я имел дело с кодом JNI, который создает Win32 AccessTokens, и, возможно, эти токены работают только в том потоке ОС, в котором они были созданы .. хотя не уверен ..

David Leonard 13.05.2010 01:31

Спецификация JVM ничего строго по этому поводу не говорит. Его оставлено разработчикам JVM для сопоставления Java-theads с платформой (Windows, Linux и т. д.). Также трудно поверить, что между потоками Java и потоками ОС будет однозначное соответствие.

Другие вопросы по теме