Wielowątkowe i asynchroniczne aplikacje w Javie

1950 PLN+23% VAT (2398 PLN brutto / 1 os.)

Czas trwania szkolenia:2 dni (16h)

Kod kursu:J/PARA

Poziom zaawansowania:
javamultithreading

Dostępne terminy

  • Termin
  • Trener
  • Cena
  • Zapis
  • Lokalizacja

Termin:

27 czerwiec
Trwają zapisy na szkolenie

Trener:

Mateusz Kamiński

Cena:

1950 PLN netto+23% VAT

Lokalizacja:

Zdalne
Zdalne

Termin:

28 listopad
Trwają zapisy na szkolenie

Trener:

Mateusz Kamiński

Cena:

1950 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ątkowe i asynchroniczne aplikacje w Javie

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?

  • Osób chcących poznać możliwości programowania wielowątkowego i asynchronicznego w języku Java

Wymagania

  • Podstawowa umiejętność programowania w języku Java

Zalety

  • Przekrojowe omawianie zagadnień oraz przykłady oparte o życiowe problemy
  • Promowanie obowiązujących konwencji i dobrych praktyk programistycznych
  • Minimalna teoria oparta na praktycznych przykładach i warsztatach
  • Praktyczna wiedza uwzględniająca zmiany wprowadzone w najnowszych wydaniach Javy

Cele szkolenia

  • Nabycie umiejętności programowania wielowątkowego oraz asynchronicznego w Javie z uwzględnieniem nowości wprowadzanych do języka Java przez ostatnie lata
  • Poznanie niuansów języka Java w zakresie dostępnych elementów wspomagających programowanie wielowątkowe i asynchroniczne
  • Omówienie i praktyczne przetestowanie wpływu zastosowanych rozwiązań na wydajność napisanego kodu
  • Poznanie możliwości debugowania i testowania wielowątkowej aplikacji

Program

Terminologia na przykładzie JVM

  • Programowanie współbieżne, wielowątkowe, asynchroniczne
  • Niebezpieczeństwa związane z wielowątkowymi procesami - wyścigi, deadlock, zagłodzenie, livelock
  • Sekcja krytyczna
  • Cechy wątków w Javie
  • Słowo kluczowe volatile oraz synchronized
  • Zasady działania wielowątkowości w ramach JVM - Java Memory Model
  • Poprawne tworzenie typów Thread-Safe

Tworzenie i koordynacja pracy wątków

  • Standardowe i nowe API tworzenia wątków w Javie
  • Interfejsy funkcyjne zadań realizowanych na wątkach - Runnable / Callable
  • Typ CompletableFuture
  • LockSupport park / unpark vs standardowy Thread.wait
  • Asynchroniczna obsługa zapytań typu REST na przykładzie wbudowanego w JDK HttpClient

Egzekutory

  • Porównanie dostępnych typów egzekutorów
  • Harmonogramowanie zadań asynchronicznych z wykorzystaniem egzekutorów

Synchronizacja wątków z użyciem blokad jawnych i niejawnych

  • proste blokady obiektowe - ReentrantLock, ReadWriteLock, StampedLock
  • Semafor a licznik CountDownLatch
  • CyclicBarrier i Phaser

Kolekcje i strumienie wielowątkowe

  • Podstawowe kolekcje blokujące: ConcurrentHashMap, ConcurrentLinkedDeque/Queue
  • Kolekcje skalowalne i automatycznie sortujące zawartość: ConcurrentSkipListMap, ConcurrentSkipListSet
  • Kolekcje kopiujące zawartość: CopyOnWriteArrayList, CopyOnWriteArraySet
  • Typy kolejek: porównanie interfejs TransferQueue, BlockingQueue wraz z dostępnymi implementacjami
  • Wrappery na istniejące kolekcje: java.util.Collections.synchronized...
  • Strumienie wielowątkowe
  • Zagrożenia płynące z naiwnego używania strumieni wielowątkowych

Wykorzystanie istotnych elementów java.util.concurrent

  • Zastosowanie typów atomowych
  • Framework Fork/Join
  • Typy reaktywne: Flow / Publisher / Subscriber

Wirtualne wątki

  • Porównanie wątków fizycznych i wirtualnych
  • Potencjalne problemy w używaniu wirtualnych wątków
  • Typ ThreadLocal a ScopedValue
  • Structured Concurrency - nowe spojrzenie na programowanie asynchroniczne w Javie
  • Popularne frameworki a wirtualne wątki

Debugowanie / testowanie rozwiązań wielowątkowych

  • Problemy w testowaniu aplikacji wielowątkowych
  • Debugowanie z wykorzystaniem VisualVM / jstack
  • Techniki pisania testów jednostkowych dla kodu wielowątkowego
  • Oficjalne narzędzie od JDK: jcstress

Project reactor (Opcjonalnie)

Podobne szkolenia