2022-04-18 20:02:07
Synchronizing on Value-Based Classes
https://www.javaspecialists.eu/archive/Issue299-Synchronizing-on-Value-Based-Classes.html
В 299 выпуске Хенц Кабутс рассказывает почему нельзя синхронизировать потоки на объектах, помеченных аннотацией @ValueBased. Такие объекты "не имеют идентичности", они взаимозаменяемы. В список таких объектов входят Boolean, Byte, Character, Double, Float, Integer, Long, Short, Duration, Instant, LocalDate, LocalDateTime, LocalTime, MonthDay, OffsetDateTime, OffsetTime, Period, Year, YearMonth, ZonedDateTime, ZoneId, ZoneOffset итд.
В Джаве 17 появился ключ запуска - -XX:DiagnoseSyncOnValueBasedClasses=2. Если запустить ваше приложение с этим ключом, то оно встретив блок синхронизации на @ValueBased объекте будет крашиться. Удобно да? Ну по крайней мере, чтобы запускать при тестировании.
996 views17:02