Onsite školení Java vícevláknové programování

Vícevláknové (souběžné nebo paralelní) programování patří k nejobtížnějším částem programování. Je snadné napsat vícevláknový kód, který zdánlivě funguje. Kurz se ve velké míře soustředí na konceptuální rozbor problémů souběžného zpracování a jejich předcházení. Výklad využívá nejen klasického Thread aunnable, ale i moderních paralelních knihoven zavedených v JDK 5.

Vybraná témata: vlákno a proces ⚫ thread a runnable ⚫ executor ⚫ callable a future ⚫ kooperace vláken ⚫ paměťový model Javy ⚫ interference vláken ⚫ chyby konzintence paměti ⚫ synchronizace a další prostředky ochrany ⚫ psaní vláknově bezpečného kódu ⚫ ladění a testování vícevláknových aplikací

Kód: JAV Délka: 1 (dní) · Jazyky: česky nebo anglicky · Zákl. cena: 9990 Kč/os.


Už od 2 osob. Více osob - větší sleva! Pro jiné množství nás kontaktujte.
Vyberte si dny, které vám vyhovují. V naprosté většině případů vám vyjdeme vstříc. Nemusí jít po sobě, ale je to určitě lépe. Rozdělené školení se cenově neliší od po sobě jdoucího.
Cena za jednoho účastníka.
Konečná celková cena (nejsme plátci DPH).

Co se na školení Java vícevláknové programování naučím?

  1. Úvod
    1. Procesy vs. vlákna (threads)
    2. Více CPU/jader
    3. Proč je programovat víceláknově obtížné?
    4. Důvody vícevláknově programovat
    5. Vlákno main()
    6. Doporučená literatura
  2. Základy vláken
    1. Definice vlákna
    2. Rozhraní Runnable
      1. Metoda run()
    3. Třída Thread
      1. Jemný úvod
      2. Definice vlákna
        1. Poskytnutím Runnable
        2. Poděděním Thread
        3. Jaký způsob zvolit?
      3. Pojmenování vlákna
      4. Metoda start()
      5. Metoda Thread.sleep()
      6. Přerušení (interruptions)
      7. Metoda yield()
      8. Další uživatečné metody
        1. currentThread()
        2. isAlive()
      9. Metody stop(), suspend() a resume()
    4. Rozhraní Executor
      1. Executor
      2. ExecutorService
      3. SchedulerExecutorService
      4. execute() a submit()
    5. Fondy (pool) vláken
      1. newFixedThreadPool()
      2. newCachedThreadPool()
      3. newSingleThreadExecutor()
      4. scheduled thread Executor
    6. Callable<V> a Future<V>
    7. Skupiny vláken (thread groups)
    8. Zachytávání výjimek
  3. Kooperace a komunikace vláken
    1. Pozastavení - Thread.sleep()
    2. Přerušení - Thread.interrupt()
      1. Metoda interrupt()
      2. Umožnění přerušení
        1. Zachycení InterruptedException
        2. Thread.interrupted()
      3. Příznak přerušení (interrupt flag)
      4. InterruptedException
    3. Čekání na ukončení - Thread.join()
      1. Varianta s timeoutem
    4. Thread.yield()
    5. Čekání na upozornění - Object.wait()
      1. Varianta s timeoutem
      2. Uvolnění zámku
      3. Guarded block idiom
      4. Výjimka InterruptedException
      5. Výjimka IllegalMonitorStateException
    6. Upozornění čekajícím vláknům - Object.notify() a notifyAll()
      1. Probuzení jednoho a všechech vláken
      2. Výjimka IllegalMonitorStateException
      3. Spurious wakeup
  4. Sdílení prostředků
    1. Stack (zásobník) - nesdílen vlánky
      1. LIFO pamět
      2. Každá metoda má svůj stack
      3. Lokální proměnné a formální parametry
      4. Parametr exception handleru
    2. Heap (hromoda) - sdílen vlákny
      1. Random-access pamět
      2. Instační proměnné
      3. Statické proměnné
      4. Prvky polí
      5. Objekty
  5. Rizika sdílení prostředků
    1. Interference vláken
      1. Interleave (prokládání)
      2. Race condition (souběh)
      3. Liveness hazard (aktivita)
        1. Deadlock (uváznutí)
        2. Starvation (vyhladovění)
        3. Livelock (vzájemné brždění)
    2. Chyby konzistence paměti
      1. Vztah happens-before ("nastává-před")
      2. Atomicity (nedělitelný přístup)
      3. Visibility (viditelnost)
  6. Ochrana před riziky sdílení
    1. Synchronizace
      1. Co dělá synchronizace
      2. Co a kdy synchronizovat
      3. Synchronized metody
      4. Synchronized příkazy
      5. Nevýhody a rizika synchronizace
    2. Zámky (locks)
      1. Implicitní zámek (intristic lock)
      2. Explicitní zámek - rozhraní Lock
        1. Metody lock() a unlock()
        2. Neblokující pokus o zamčení
        3. Přerušitelný pokus o zamčení
        4. Pokus o zamčení s timeoutem
        5. Úklid při výjimce
        6. Wait/notify mechanismus
        7. Implementace ReentrantLock
      3. Atomicita
        1. Vždy atomické operace
        2. Nutnost sychnonizace
        3. Klíčové slovo volatile
        4. Třídy Atomic*
  7. Psaní, ladění a testování vícevláknového kódu
    1. Vláknově bezpečný kód
      1. Neměnné (immutable) objekty
      2. Vláknově nebezpečné třídy z JDK
      3. Thread-safe anotace z JCIP
    2. Ladění vícevláknového kódu
      1. Thread dump
        1. Z příkazové řádky
        2. GUI nástroj VisualVM
      2. JDK nástroje
        1. jps
        2. jstack
        3. jmap
    3. Testování vícevláknového kódu
      1. Tempus-fugit
      2. Data-race-test
      3. JCarder
      4. Keshmesh

Doporučené vstupní znalosti

  • znalosti Java SE
  • práce s příkaz. řádkou
  • práce se soubory

Doporučené předcházející kurzy

Doporučené navazující kurzy

Lektor kurzu

Libor Jelínek

Je nadšený programátor a štastný uživatel Linuxu. Má přes 10 let zkušeností s Javou, ale nyní nejraději pracuje v Pythonu. Je autorem řady příruček školení, učebnic a článků. Volno tráví kutěním nebo vařením.

Nevyhovuje Vám rozsah nebo témata školení?

To správné školení ve správný čas pro umíme připravit na míru!


Za svojí prací si stojíme a děláme ji s nadšením

Nabízíme dlouhodobé a pevné partnerství. Usilujeme o to stát se partnerem, který vám vrátí investici do IT zpět v podobě skutečně užitečného řešení pro vaše podnikání. Máme špičkové znalosti, ale především nadšení se kterým věci děláme.

Novinky

11. října 2016 Nové vylepšené osnovy kurzů Java EE I. a Java EE II. pro Java EE 7.
11. září 2016 O prázdninách jsme nelenili a aktualizovali školení Java - základní kurz - syntaxe a Core API pro novou Javu 8!

Virtage Software

Jsme softwarovou společností specializující se na on-site IT kurzy a školení pro firmy. Technologie, které školíme aktivně používáme při vlastním vývoji a podpoře klientů v rámci naší podpory IT profesionálů.

Kontaktujte nás

Virtage Software - Libor Jelínek
sídlo: Luční 542, 295 04 Uhlířské Janovice
tel.: +(420) 315 555 488 nebo +(420) 777 205 142
email: podpora@virtage.cz