Многопоточность Java под капотом
Все абстракции рано или поздно протекают, какими бы красивыми и стройными они ни были. Протекают и те, что скрывают за громкой фразой "Write Once, Run Anywhere" особенности исполнения многопоточного кода на реальном железе.
И горе после такой протечки тому, кто не понимает, как всё устроено под капотом. Частенько для того, чтобы разобраться в каком-то поверхностном явлении, приходится разрывать все любезно накрученные слои абстракции. Понимать Модель Памяти Java — важно, но этого мало. Нужно ещё и знать, как эта модель устроена, и понимать, почему именно так. А для этого нужно идти глубже!
Доклад будет состоять из краткого теоретического описания происходящего, а затем решительно перейдёт к расчленению OpenJDK в режиме живого демо. Мы рассмотрим, как реализованы volatile переменные и synchronized блоки, узнаем, что же такое мембар и почему все так любят x86, и напоследок жестоко надругаемся над HotSpot!
Специалист по разработке высокопроизводительных отказоустойчивых приложений, в том числе платформ для высокочастотной торговли. В свободное время любит поковыряться в исходниках OpenJDK и потворить с ними всяческое непотребство. Автор нескольких популярных статей о многопоточности.
Некоторое время проработал в Яндексе. В данный момент работает в петербургском центре разработки Deutsche Bank, где пользуется замечательной возможностью применить теоретические изыски на реальных приложениях.