@clazzen

Реальная ли в jvm многопоточность?

Я точно знаю что в большинстве компилируемых языках программирования многопоточность настоящая(в rust, C++ и т. д.). Но почти у всех интерпретируемых языков интерпретатор работает в 1 потоке и многопоточности с асинхронностью тут нет(как в js, python...). Меня интересует, есть ли в jvm языках многопоточность как в компилируемых языках?
  • Вопрос задан
  • 66 просмотров
Решения вопроса 2
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Есть
Ответ написан
Комментировать
vabka
@vabka
Токсичный шарпист
В JVM "настоящая" многопоточность, в которой создаются потоки ОС.
Также сейчас идёт разработка "неполноценной" многопоточности на зелёных потоках - project loom.

PS: в js и python тоже можно применить "настоящую", а в rust и C++ - асинхронность на одном потоке.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mayton2019
Bigdata Engineer
Проверить это можно так. Запускаем jvm-процесс который создает 1000 потоков но не сразу а постепенно. Смотрим в linux top процессов и если количество процессов (потоков) растет то мы получаем доказательство того что jvm-theread линейно связан с числом linux-processes (threads).

В windows ЕМНИП один процесс включает в себя от 1 до бесконечности вычислительных потоков.
В linux процесс и поток отличаются опциями разделения ресурсов. Тоесть что по сути опциями безопасности. Например потоки шарят разделяемую память а процессы - не шарят никогда.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы