Wielowątkowość w języku Java

4950 PLN+23% VAT (6088 PLN brutto / 1 os.)

Czas trwania szkolenia:5 dni (40h)

Kod kursu:J/MT

Poziom zaawansowania:
javamultithreading

Dostępne terminy

  • Termin
  • Trener
  • Cena
  • Zapis
  • Lokalizacja

Termin:

13 listopad
Trwają zapisy na szkolenie

Trener:

Michał Podbielski

Cena:

4950 PLN netto+23% VAT

Lokalizacja:

WarszawaKrakówZdalne

Lokalizacja:

WarszawaKrakówZdalne

Termin:

8 kwiecień
Trwają zapisy na szkolenie

Trener:

-

Cena:

4950 PLN netto+23% VAT

Lokalizacja:

Zdalne
Zdalne

Interesuje Cię szkolenie stacjonarne lub nie odpowiada Ci żaden z dostępnych terminów?

Ikona pytaniaZapytaj o szkolenie

O szkoleniu Wielowątkowość w języku Java

W cenie otrzymasz:

  • Materiały szkoleniowe
  • Certyfikat ukończenia szkolenia
  • W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki

Dla kogo?

  • Programiści Java chcący wytwarzać aplikacje wielowątkowe

Wymagania

  • Umiejętność programowania w języku Java

Zalety

  • Szkolenie uwzględnia zarówno sposoby radzenia sobie z wielowątkowością przy użyciu gotowych klas z API java.util.concurrent, jak i dogłębnie omawia mechanizmy, problemy i niskopoziomowe rozwiązania dla wielowątkowości, których znajomość niezbędna jest do tworzenia własnych zaawansowanych rozwiązań
  • Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
  • Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
  • Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how

Cele szkolenia

  • Dogłębne poznanie API Java dla wielowątkowości, umiejętny dobór rozwiązań w celu optymalizacji wydajności oraz użycie narzędzi do monitoringu i wykrywania problemów wielowątkowości
  • Nabycie umiejętności tworzenia aplikacji wielowątkowych począwszy od podstaw współpracy między wątkami, przez zaawansowane algorytmy busy-waiting z użyciem operacji typu CAS, na dokładnym przećwiczeniu API java.util.concurrent skończywszy
  • Poznanie wzorców wielowątkowości z perspektywy ich pokrycia oraz braków w java.util.concurrent z omówieniem alternatywnych strategii. Tak, aby uczestnicy mieli świadomość, kiedy sięgać po gotowe rozwiązania, a kiedy należy tworzyć własne
  • Omówienie wpływu systemów operacyjnych, optymalizacji Java (JIT, Hotspot) czy samych procesorów
  • Omówienie i przećwiczenie związanych z tym problemów wielowątkowości oraz sposobów ich rozwiązywania

Program

Podstawy wielowątkowości

  • Czym jest wielowątkowość
  • Przetwarzanie liniowe
  • Przetwarzanie wielowątkowe (parallel, concurrent)
  • Wywłaszczanie wątków
  • Szeregowanie wątków
  • Współpraca między wątkami

Procesy

  • Proces a wątek
  • Komunikacja między wątkami
  • Komunikacja między procesami
  • Przegląd rozwiązań JEE
  • Niskopoziomowe API procesów w Javie

Wątki

  • Podstawy API wątków (Thread, Runnable)
  • Startowanie i kończenie wątków
  • Parametry wątków
  • Wyjątki i handlery
  • Podstawy współpracy między wątkami
  • Zagrożenia w aplikacjach wielowątkowych
  • Narzędzia monitorowania pracy wątków (JConsole, VisualVM, JMC)

Wykonywanie zadań

  • Wzmianka o starym API (Timer, TimerTask)
  • Co poza Runnable (Delayed, Callable, różne wersje Future)
  • Przegląd kolejek blokujących zadania
  • Wykonywanie zadań
  • Pule wątków
  • Przegląd kolejek blokujących zadania
  • Scheduling
  • Konsumpcja wyników
  • Fork-Join API
  • Flow - programowanie reaktywne
  • „Promises” w Javie czyli CompletableFuture

GUI a wielowątkowość w Javie

  • Problemy wielowątkowości w GUI
  • Rozwiązania AWT
  • Rozwiązania Swing
  • Kończenie pracy

Operacje atomowe

  • Czym jest atomowość?
  • Problemy braku atomowości
  • Unikanie problemów (stałe, dane lokalne)
  • Gdzie Java gwarantuje atomowość
  • Bariery pamięci
  • Klasy atomowe i leniwy zapis
  • Operacje CAS w API (java.util.concurrent.atomic i java.lang.invoke)
  • Pętle CAS jako alternatywa synchronizacji (spinlock)

Zaawansowana współpraca wątków

  • Monitor a Lock (java.util.concurrent.locks)
  • Gotowe realizacje Lock
  • Lock a współpraca wątków (Condition)
  • Tworzenie klas blokujących
  • Zaawansowane spinlock’i
  • Inne klasy blokujące

Kolekcje a wielowątkowość

  • Stare kolekcje (Hashtable, Vector, Stack)
  • Collections API a wielowątkowość
  • Cechy kolekcji wielowątkowych java.util.concurrent
  • Kolekcje blokujące
  • Kolekcje kopiujące przy zapisie
  • Kolekcje współbieżne
  • Porównanie wydajności java.util.concurrent z Collections API

Garbage Collector a wielowątkowość

  • Pauza czyli Stop The World
  • Słaba teoria generacji i model pamięci
  • Parametry wydajnościowe GC
  • Rodzaje GC a wielowątkowość
  • Dobór GC

Asynchroniczne IO

  • Asynchroniczna praca z plikami
  • Asynchroniczna praca z TCP/IP
  • CompletableFuture w java.net.http (wprowadzenie)

Wzorce wielowątkowości a gotowe rozwiązania

  • Wzorce blokowania
  • Wzorce współpracy
  • Wzorce zarządzania wątkami
  • Wzorce obsługi zdarzeń
  • Wzorce wywołań asynchronicznych
  • Wzorce inicjalizacji

Wydajność aplikacji wielowątkowych

  • Współpraca a odpytywanie
  • Sposoby ograniczania blokowania
  • Granica opłacalności dla Fork-Join
  • Ograniczenia zrównoleglenia - prawo Amdahla
  • Kontrola ilości wątków
  • Tuning Javy dla wątków

Podobne szkolenia