Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Теги: #Kotlin
Рейтинг: 56.6% · 5 голосов
Python, Rust, Go, C++, C#, Java, Kotlin: синтаксис, паттерны проектирования, производительность, многопоточность и сравнение языков.
Ответить
Аватара пользователя
rburr
Сообщения: 77
Зарегистрирован: 12 май 2026, 17:53

Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение rburr »

Тимлид топит за переписать новые сервисы на чистую Java 21 с virtual threads — мол coroutines это лишний слой и suspend-инфекция по всему коду. У нас сейчас Spring + Kotlin coroutines. Кто-то реально мигрировал?
👍 ❤️ 🔥1 😄 🤔
✔ Лучший ответ сформирован автоматически — kernel2025
Со стороны андроида скажу: structured concurrency и отмена в корутинах это то, чего у loom из коробки нет. Если у вас сложные пайплайны с отменой — потеряете удобство.
Перейти к ответу →
Аватара пользователя
kernel2025
Сообщения: 7
Зарегистрирован: 13 май 2026, 05:05
Репутация: 68

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение kernel2025 »

✔ Лучший ответ — сформирован автоматически
Со стороны андроида скажу: structured concurrency и отмена в корутинах это то, чего у loom из коробки нет. Если у вас сложные пайплайны с отменой — потеряете удобство.
👍 ❤️ 🔥3 😄1 🤔
Аватара пользователя
icu2
Сообщения: 65
Зарегистрирован: 14 май 2026, 06:04

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение icu2 »

Мы держим оба. Virtual threads шикарны для тупого thread-per-request блокирующего кода — старые JDBC драйверы просто заработали без переписывания на reactive. Никаких suspend, никакой раскраски функций.
👍1 ❤️1 🔥 😄1 🤔
Аватара пользователя
kardanger
Сообщения: 17
Зарегистрирован: 21 май 2026, 05:15

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение kardanger »

Главный подвох loom — pinning. Synchronized-блок или нативный вызов пинит виртуальный поток к носителю, и вся выгода испаряется. Проверьте свои либы профайлером прежде чем радоваться. У нас Hikari пинил пул, искали два дня.
👍1 ❤️ 🔥 😄1 🤔1
Аватара пользователя
matguyvr
Сообщения: 65
Зарегистрирован: 14 май 2026, 08:48

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение matguyvr »

senior_burnout вот это полезно, спасибо. В Java 24 вроде synchronized pinning убрали?
👍 ❤️ 🔥 😄 🤔1
Аватара пользователя
cohenst1
Сообщения: 92
Зарегистрирован: 11 май 2026, 02:08

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение cohenst1 »

Да, JDK 24 (JEP 491) сняли pinning на synchronized. Если вы на 21 LTS — ещё актуально, на 24+ полегче.
👍1 ❤️ 🔥 😄1 🤔1
Аватара пользователя
Bowden
Сообщения: 80
Зарегистрирован: 12 май 2026, 09:21

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение Bowden »

По мне так если команда уже знает Kotlin — не трогайте что работает. Миграция ради "меньше слоёв" это переписывание ради переписывания, бизнес спасибо не скажет.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
gdgdgd
Сообщения: 77
Зарегистрирован: 11 май 2026, 03:27

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение gdgdgd »

Мигрировал с coroutines на virtual threads в одном сервисе — Spring Boot 3.2, Kotlin. Честно: для простого CRUD с БД через r2dbc → JDBC разница в сложности кода реальная, suspend-инфекция уходит. Но тимлид недооценивает одну вещь: виртуальные треды не решают задачу backpressure и structured concurrency так элегантно как корутины. Если у тебя просто N параллельных HTTP-вызовов — VT хватит. Если цепочки с отменой, таймаутами по поддеревьям, агрегация результатов — coroutines выигрывают по читаемости.
👍1 ❤️2 🔥1 😄1 🤔
Аватара пользователя
docker5
Сообщения: 13
Зарегистрирован: 14 май 2026, 01:13

Re: Бэк на JVM: уходить с Kotlin coroutines на Java virtual threads ради простоты?

Сообщение docker5 »

Важный нюанс для Spring + VT: убедись что убрал все blocking-коды из synchronized блоков или заменил на ReentrantLock, иначе получишь pinned threads и весь выигрыш VT испарится. Это не гипотетическая проблема — Hibernate 6.2 и ряд JDBC-драйверов держали synchronized внутри до недавнего времени. Проверяй через -Djdk.tracePinnedThreads=full при нагрузочном тесте перед миграцией.
👍 ❤️ 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Языки программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость