Клас дедлоков про дедлок класів



Чи знаєте ви, як уникнути дедлоков у своїй програмі? Так, цьому вчать, про це запитують на співбесідах… І тим не менш, взаємні блокування зустрічаються навіть у популярних проектах серйозних компаній на кшталт Google. А в Java є особливий клас дедлоков, пов'язаний з ініціалізацією класів, пробачте за каламбур. Такі помилки легко допустити, але важко зловити, тим більше, що сама віртуальна машина вводить програміста в оману.

Сьогодні піде мова про взаємні блокування при ініціалізації класів. Я розповім, що це таке, проілюструю прикладами з реальних проектів, попутно знайду багу в JVM, і покажу, як не допустити такі блокування в своєму коді.


Читати далі →