Szkolenie: Wielowątkowe i asynchroniczne aplikacje w Javie
Szkolenie z programowania wielowątkowego i asynchronicznego w Javie uczy nowoczesnych technik, debugowania, testowania oraz optymalizacji wydajności aplikacji, wykorzystując najnowsze funkcje języka Java i narzędzia JVM
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:2 dni (16h)
Kod kursu:J/PARA
Wielowątkowe i asynchroniczne aplikacje w Javie
Cele szkolenia
Szkolenie przygotowuje do samodzielnego projektowania i implementowania aplikacji wielowątkowych oraz asynchronicznych w języku Java z wykorzystaniem nowoczesnych narzędzi i technik
Szkolenie uczy identyfikowania i rozwiązywania problemów związanych z bezpieczeństwem wątków, synchronizacją oraz wydajnością kodu w środowisku JVM
Szkolenie omawia metody debugowania i testowania aplikacji wielowątkowych, umożliwiając skuteczną analizę i optymalizację działania programów
Dla kogo?
Programistów Java z podstawową znajomością języka, chcących rozwinąć umiejętności w zakresie programowania wielowątkowego i asynchronicznego
Osób realizujących zadania związane z optymalizacją wydajności i bezpieczeństwa aplikacji Java w środowisku produkcyjnym
Specjalistów IT oraz developerów przygotowujących się do pracy z nowoczesnymi technikami współbieżności w Javie
Efekty kształcenia
Uczestnik projektuje i implementuje aplikacje wielowątkowe w języku Java
Uczestnik analizuje i rozwiązuje problemy związane z synchronizacją wątków
Uczestnik stosuje nowoczesne narzędzia do debugowania i testowania kodu
Uczestnik wykorzystuje asynchroniczne API oraz wzorce projektowe
Uczestnik ocenia wpływ rozwiązań na wydajność aplikacji
Uczestnik wdraża dobre praktyki programistyczne w środowisku JVM
Wymagania
Podstawowa umiejętność programowania 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
Program szkolenia
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
Używanie istniejących oraz pisanie własnych podtypów StructuredTaskScope.Joiner
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)
Wybrane opinie
Przeczytaj pozytywne opinie pochodzące z ankiet satysfakcji z naszych szkoleń wypełnianych wyłącznie przez ich uczestników po realizacji usługi

