Comments 8
add-opens и add-exports знатные костыли, конечно.
Переводил проект с автотестами на 16ую, но даже в таком небольшом проекте, всего лишь с одним десятком зависимостей, полноценно избавиться не удалось. Подозреваю, что эти строчки с нами надолго теперь.
А можете уточнить по поводу "JVM теперь не завершит работу, пока все потоки программы не завершат выполнение"? В javadoc-е для 16й верии на Thread.setDaemon написано "The Java Virtual Machine exits when the only threads running are all daemon threads.".
Получается, что либо это не совсем так, либо tomcat добавляет свой shutdown hook, который ждёт завершения daemon thread-ов?
Очень неудобно было бы подвесить какой-нибудь сервис при перезапуске из-за фонового потока, который по какой-то причине завис в цикле, в который забыли прописать проверку на то, что поток прерван.
Привет! Мы управляем потоками через ExecutorService, который по умолчанию создает non-daemon потоки. И, похоже, что сейчас Java 16 работает строго по доке. Поэтому нужно либо явно передавать ThreadFactory, которая устанавливает для потоков setDaemon(true), либо аккуратно завершать ThreadPool при останове приложения.
Олег Гетманский
16 версия не является preview версией. Просто в ней есть некоторые вичи языка которые находятся в статусе preview. И чтобы ими пользоваться надо добавлять этот флаг.
Но тоже самое будет и в 17 версии, например расширенный свитч, который матчит классы и null.
Собственно говоря этот флаг нужен только если вы пользуетесь вичами языка которые не были окончательно выпущены.
Насколько большой проект переводили на Java 16?
Почему вы везде указываете автора, а просто не сделаете учётную запись с описанием в профиле для автора и не добавите его в вашу организацию на хабр?
Solar InRights: отрицание, гнев, депрессия, торг, переход на Java 16