Pull to refresh

Comments 8

add-opens и add-exports знатные костыли, конечно.

Переводил проект с автотестами на 16ую, но даже в таком небольшом проекте, всего лишь с одним десятком зависимостей, полноценно избавиться не удалось. Подозреваю, что эти строчки с нами надолго теперь.

Похоже на то, потому что даже Tomcat для Java 9+ добавляет свои --add-opens

Олег Гетманский

А можете уточнить по поводу "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 при останове приложения.

Олег Гетманский

В javadoc'е JDK 16 указано, что приложение завершается либо когда все не-daemon потоки завершаются, либо при вызове System.exit.

Я так понимаю, вы и версию tomcat-а сменили, возможно в ней почему-то отказались от завершения по System.exit.

16 версия не является preview версией. Просто в ней есть некоторые вичи языка которые находятся в статусе preview. И чтобы ими пользоваться надо добавлять этот флаг.

Но тоже самое будет и в 17 версии, например расширенный свитч, который матчит классы и null.

Собственно говоря этот флаг нужен только если вы пользуетесь вичами языка которые не были окончательно выпущены.

Насколько большой проект переводили на Java 16?

Почему вы везде указываете автора, а просто не сделаете учётную запись с описанием в профиле для автора и не добавите его в вашу организацию на хабр?

Привет!

  1. Solar InRights состоит из примерно 400 тысяч строк кода и 4 тысяч классов без учета сторонних зависимостей.

  2. Сакрального смысла в этом нет :)

Олег Гетманский

Sign up to leave a comment.