208. Wszystko czego nie chcesz wiedzieć o współbieżności w JVM - Jarosław Pałka

youtube.com 1 rok temu


Meetup: https://www.meetup.com/pl-PL/wroclawjug/events/295680183/

Temat: Monitory, zamki i atomy, czyli wszystko, czego nie chcesz wiedzieć o współbieżności w JVM

Abstract:
Wiele tygodni pracy. Utrata wiary w swoje kompetencje. Utrata zaufania w narzędzia, którymi posługuje się na codzień. Utrata wiary w ludzkość i nieodwracalne zmiany w psychice. Wszystko po to by na koniec zrozumieć, iż wszystkiemu winna regresja w kodzie JVM (https://bugs.openjdk.org/browse/JDK-8305670) na procesorach ARM, niewinnie wyglądający wyciek pamięci (https://bugs.openjdk.org/browse/JDK-8305994) i problem z "unresolved Java frame" podczas korzystania z async profiler (https://bugs.openjdk.org/browse/JDK-8287425). To tylko część tej epopei, która stała się inspiracją dla tej prezentacji.
JVM dostarcza nam wiele sposobów implementacji "mutual exclusion" w aplikacjach wielowątkowych. Synchronized, ReentrantLock czy Atomic. Każdy z tych mechanizmów ma swoje plus i minusy, znane także jako "to tylko szczegół implementacji".
Podczas kolejnej odsłony podróży w czeluście JVM, dowiesz się czym różnią się te mechanizmy, zaglądniemy w ich wnętrze i dowiesz się jaki wpływ na wydajność i skalowalność mają te drobne szczegóły implementacji.
Będzie też czas na dyskusje i praktyczne porady w jakich sytuacjach sięgać po każdy z tych mechanizmów.
Czym jest "adaptive locking"? Co robią wątki kiedy są zaparkowane? Czym jest tajemniczy futex oraz dlaczego zmienne typu Atomic to tak naprawdę lock na poziomie sprzętowym? Będzie też o reentrancy, fairness i monitor deflation.
Jeśli choć na jedno pytanie odpowiedziałeś tak, lub też chcesz się po prostu dobrze bawić i niekoniecznie coś wynieść z tej prezentacji, zapraszam.

Prelegent: Jarosław Pałka

For more than 20 years in the IT industry, as a database administrator, programmer, architect, manager and "onsite disaster engineer".
I took part in small,medium and nonsensically large projects carried out according to the rules "Waterfall", Agile and in the absence of any methodologies, with the same always effect. Which led me to the conclusion that it doesn't matter what you do as long as you do it in the simplest possible way and use the right tools to do the work for you.
Recently I spend too much time exploring JVM's best kept secrets, reading about managed runtimes, parsers and interpreters.
From time to time you can hear my low-quality jokes about architecture at conferences in Poland.
I am also author of a blog on http://geekyprimitives.com/, one of the founders of SegFault conferences brand (https://segfault.events) and full time benchmarking infrastructure engineer at Neo4j.