
Михаил Поливаха
Spring АйО
Написать многопоточный код само по себе сложно, но вот проверить — это, как правило, еще более сложная задача. Мы начнем с обсуждения того, почему стандартные тесты не ловят состояния гонки и почему «на моей машине работает» — опасная иллюзия для Java-разработчика. Тестирование конкурентности сопряжено с уникальными вызовами: от недетерминизма выполнения до нюансов видимости изменений в памяти.
Далее мы разберем теоретические подходы, которые делают верификацию многопоточности возможной. Сравним различные философии: от стресс-тестирования на уровне железа до формального анализа моделей. В основной части доклада мы погрузимся в работу трех ключевых инструментов: JCStress, Lincheck и Fray. Вы узнаете, в каких сценариях каждый из них проявляет себя лучше всего и как выбрать подходящий инструмент под вашу модель многопоточности.
В итоге у вас будет четкая карта развития, которая позволит освоиться на рубеже потокобезопасности и превратить непредсказуемые «гейзенбаги» в системную часть вашего Quality Gate.

Spring АйО