#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 получила производительность при таком дизайне?…