Как JVM использует операционную систему при создании потока?

#java

#java

Вопрос:

Здесь я пытаюсь четко изучить java thread.. В каком процессе JVM создает поток. Предположим, если я создаю поток на java, то как JVM создает этот поток? Кому это отправит exicute?.. Какой из них является базовым процессом для этого…

Ответ №1:

Большинство JVM используют стандартные вызовы ОС для создания собственных потоков (например, Win32 CreateThread API или POSIX pthread_create ) и передают собственную функцию в JVM, которая продолжает выполнять Java-код в потоке.

Комментарии:

1. Это может быть верно для конкретной реализации. Но это не обязательно.

Ответ №2:

Для каждого запущенного Java-приложения существует отдельный процесс JVM. Потоки, которые создает приложение, создаются в рамках этого процесса.

Ответ №3:

На самом деле спецификация виртуальной машины Java не определяет, как потоки должны обрабатываться JVM. Есть только описание высокого уровня. Сама JVM Sun внесла изменения в этом отношении: вплоть до Java 1.1 она использовала так называемые зеленые потоки, которые управляются самой JVM. Позже он использовал собственные потоки, которые предоставляет операционная система хоста.

Комментарии:

1. Мой вопрос в основном о методе Java (не более о собственном методе). Как JVM использует Javastack, фреймы и программный регистратор для выполнения потока?

2. кто будет обрабатывать (ОС или Jvm) приоритет потока, взаимодействие, синхронизацию? как jvm получила производительность при таком дизайне?…