Re[2]: Киллер фича JDK 21 - virtual threads
От: · Великобритания  
Дата: 12.05.23 07:21
Оценка:
Здравствуйте, Sinclair, Вы писали:

S> Если мы имеем несчастье вызвать какую-то IO библиотеку, которая написана до JDK 21, то виртуальный поток вполне успешно встанет в ожидание, сожрав поток ОС.

Если эта IO-библиотека использует у себя внутри JNI, тоже написанный до 21, то да, тут оно и выжрет поток.
А если она использует тот же JDK-шний io, то всё ок.

S> Но это — чисто performance issue, т.е. старый код продолжит работать так же, как он работал в старом JDK. Апгрейд на версию библиотеки, адаптированную к JDK 21, даст автоматическое улучшение масштабируемости приложения без переписывания кода.

Да. Ещё расчёт на то, что в java принято писать pure-решения. В отличие от того же c#, где на каждый чих DllImport.

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

S> Если нет — то приложение просто взорвётся при переходе на виртуальные потоки.
Да. Возможная грабля, похоже. В смысле вряд ли оно это сможет обнаружить как-то. Но ведь реальные треды никуда не уходят. Если есть такой код, который плотно взаимодействует с нативом и делает всякие странные вещи, то его можно всё ещё пускать на реальных тредах.
avalon/3.0.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.