Если переменные в Java доступны из нескольких потоков, необходимо обеспечить их безопасную публикацию.Обычно это означает использование synchronized
или volatile
.
У меня сложилось впечатление, что некоторые из моих коллег не воспринимают эту проблему всерьез, поскольку они "никогда не слышали о volatile
раньше, и их программыработал годами ".
Итак, мой вопрос:
Может ли кто-нибудь предоставить пример Java-программы / фрагмента, который надежно показывает проблемы видимости данных.
Я думаю, что запуск программы и обнаружение неожиданного значения NPE или устаревшей переменной поможет больше, чем просто теоретические объяснения, которые невозможно продемонстрировать.
Большое спасибо за вашу помощь!
Обновление: Просто для того, чтобы еще раз подчеркнуть суть.Я прочитал Java Concurreny на практике и знаю примеры, что теоретически имеют проблемы с видимостью.То, что я ищу, это способ на самом деле продемонстрировать их.Я не уверен, что это действительно возможно, но, возможно, есть конфигурация jvm или что-то подобное, что позволяет это.