Re: Киллер фича JDK 21 - virtual threads
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.05.23 06:11
Оценка: 21 (1) :)
Здравствуйте, ·, Вы писали:

Очень, очень интересная штука.
Повод перечитать Fibers under the magnifying glass.

Вкратце, как я понимаю, основная проблема зелёных потоков — взаимодействие с неуправляемым кодом.
Java пытается выехать на том, что весь код — управляемый, и все блокирующие IO операции заботливо подменены под капотом на вызовы неблокирующих с последующим yield.
Если мы имеем несчастье вызвать какую-то IO библиотеку, которая написана до JDK 21, то виртуальный поток вполне успешно встанет в ожидание, сожрав поток ОС.
Но это — чисто performance issue, т.е. старый код продолжит работать так же, как он работал в старом JDK. Апгрейд на версию библиотеки, адаптированную к JDK 21, даст автоматическое улучшение масштабируемости приложения без переписывания кода.

Хуже — ситуация, когда мы вызываем какой-то неуправляемый код, который напрямую лезет в TLS средствами операционки. Приняты ли в JDK 21 какие-то меры борьбы с таким поведением?
Если нет — то приложение просто взорвётся при переходе на виртуальные потоки.

В остальном — конечно, было бы прикольно иметь возможность прозрачного использования кооперативной многозадачности без утомительного переписывания прямолинейного кода на код с async/await.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.