Java: Concurrent Programming – vícevláknové programování v Javě (JAV4)

Programování, Java, Spring

Školení je určeno především pokročilejším vývojářům. Ačkoliv část úvodu je věnována zopakování terminologie a základních konceptů (thread, race condition apod.), neměly by tyto koncepty být pro posluchače úplnou novinkou. Kurz popisuje vývoj simultánních procesů s Javou. To zahrnuje koncepty paralelního programování, neměnnosti, vláken atd.

KDE A KDY KURZ PROBÍHÁ?



Tento kurz není vypisován v otevřených termínech pro veřejnost.
Realizujeme jej výhradně jako školení na klíč, pro které může být zde uvedená osnova inspirací. Finální obsah, časový rozsah, termíny i forma realizace jsou vždy přizpůsobeny konkrétním požadavkům zadavatele. Školit můžeme také v angličtině.

Poptat kurz na míru

Náplň kurzu:

Skrýt detaily
  • Úvod do concurrency
    1. Thread, multithreading, paralelní zpracování
    2. Výhody a úskalí; race conditions, deadlocks, livelocks, dopady na výkonnost
  • Exekuční model
    1. Pořadí vykonávání, uspořádání operací, paměťová viditelnost
    2. Java Memory Model, relace happens-before
    3. Využití
  • Concurrency v teorii
    1. Spravování stavu, nemodifikovatelnost
    2. Izolace a její techniky
    3. Bezpečná publikace objektů
  • Concurrency v praxi
    1. Idiomy: double-checked locking, lazy initialization holder, final wrapper
    2. Instance pooling
    3. Návrh thread-safe tříd; návrhové postupy a problémy
  • Základní podpora multithreadingu
    1. Monitory: JVM and Java, používání vestavěných zámků a podmínkových proměnných
    2. Thread: vykonávání, blokování a přerušení
    3. Ukončování JVM
  • Threading framework
    1. Thread pools, Executor framework, Fork Join Pool
    2. Návrh založený na aktivitách, plánování, futures
    3. Problém ukončení aktivit
  • Stavební bloky
    1. Synchronizace s nízkou režií: atomické proměnné, volatile
    2. Synchronizační primitiva: zámky, semafory, bariéry, čítače atd.
    3. Synchronized & concurrent collections
  • Problémy
    1. Deadlocks, livelocks, starvation: příčiny a řešení, techniky
    2. Amdahlův zákon, cena za paralelismus, výkonnost systému
    3. Problém „úzkého hrdla“, optimalizační strategie
    4. Neblokující techniky
  • Některé další frameworky
    1. NIO: neblokující I/O
    2. NIO.2: asynchronní I/O
    3. Fork Join Pool, podpora asynchronních úloh
    4. Reaktivní programování, `CompletableFuture`, Reactive Streams (Flow), Push Streams (OSGi)
Předpokládané znalosti:
Předpokládá se pokročilá znalost vývoje v jazyce Java (kurz JAV2).
Doporučený předchozí kurz:
Java – pokročilé techniky programování (JAV2)
Doporučený následný kurz:
Java pod pokličkou – vybraná témata pro pokročilé vývojáře v Javě (JAV5)
Časový rozvrh:
2 dny (9:00-17:00)

Ukázka prostředí a výuky