Расчленяя многопоточность

Встреча JUG.ru c Глебом Смирновым (Deutsche Bank) 26 февраля 2014 года.

Все абстракции рано или поздно протекают, какими бы красивыми и стройными они ни были. Протекают и те, что скрывают за громкой фразой «Write Once, Run Anywhere» особенности исполнения многопоточного кода на реальном железе.

И горе после такой протечки тому, кто не понимает, как всё устроено под капотом. Частенько для того, чтобы разобраться в каком-то поверхностном явлении, приходится разрывать все любезно накрученные слои абстракции. Понимать Модель Памяти Java — важно, но этого мало. Нужно ещё и знать, как эта модель устроена, и понимать, почему именно так. А для этого нужно идти глубже!

Доклад будет состоять из краткого теоретического описания происходящего, а затем решительно перейдёт к расчленению OpenJDK в режиме живого демо. Мы рассмотрим, как реализованы volatile переменные и synchronized блоки, узнаем, что же такое мембар и почему все так любят x86, и напоследок жестоко надругаемся над HotSpot!