jugnsk Митап #11 JUGNsk (29.10.2019 — 29.10.2019)

Java PathFinder: летим на Марс без багов и дедлоков

img

В современном мире разработчикам сложно избежать темы многопоточности. Необходимо, чтобы приложения работали быстро, с минимальной задержкой, задействовали все доступные вычислительные ядра (не забудьте про масштабируемость!), использовали минимум оперативной памяти и, конечно же, делали именно то, что нужно. К сожалению, даже продвинутые методы тестирования многопоточных программ дают слишком ненадежный результат - всё зависает обязательно на продакшн сервере, только под большой нагрузкой и наверняка перед самым Вашим отъездом в отпуск.

В докладе мы зададимся вопросом: как проверить, что ваше Java приложение работает при любом, даже самом неожиданном сценарии конкурентного выполнения — не зависает, не приводит к некорректным результатам и не бросает неожиданные исключения? Оказывается, не обязательно быть специалистом по верификации многопоточных алгоритмов, чтобы использовать продвинутые инструменты анализа паралелльных систем и успешно находить ошибки в коде. В ходе выступления на примерах будет показано, что используя Java PathFinder (https://github.com/javapathfinder) — специальную JVM, разработанную в NASA - разработчик может очень быстро находить довольно нетривиальные ошибки, проявляющиеся только при конкурентном исполнении.