| Tytuł: | Wielowątkowość w Javie |
| Kod: | Java-wat |
| Kategoria: | Java i JVM |
| Forma: | 50% wykłady / 50% warsztaty |
| Czas trwania: | 5 dni |
| Zapisy: |
Indywidualne zamówienie i dopasowanie dla grupy. |
| Logistyka: |
W siedzibie klienta lub w innym dowolnym miejscu. |
Szkolenie adresowane jest do programistów Java, aplikacji wielowątkowych. Celem szkolenia jest dokładne poznanie API Java w zakresie wielowątkowości i nabycie umiejętności posługiwania się nim.
Od podstaw współpracy między wątkami, poprzez zaawansowane operacje typu CAS, na dokładnym przećwiczeniu biblioteki java.util.concurent skończywszy. Także z uwzględnieniem wpływu systemów operacyjnych, czy optymalizacji Java, a nawet samych procesorów - związanych z tym problemów programowania wielowątkowego i sposobów ich rozwiązywania.
Program Szkolenia
Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.-
Wprowadzenie do wielowątkowości- Czym jest wielowątkowość
- Szeregowanie wątków
- Współpraca między wątkami
- Czym jest wielowątkowość
-
Procesy w Javie- Procesy a wątki
- Niskopoziomowe API procesów w Javie
- Przegląd rozwiązań wyższego poziomu w Java (logika zdalna)
- Procesy a wątki
-
Wątki w Javie- Tworzenie wątków w Javie
- Parametry wątków
- Wyjątki w wątkach
- Wątki wirtualne
- Podstawowa współpraca między wątkami
- Zagrożenia w aplikacjach wielowątkowych
- Narzędzia monitorowania pracy wątków
- Tworzenie wątków w Javie
-
Zadania schedulowane i pule wątków- Stare API schedulingu
- Różne typy zadań - czyli nie tylko Runnable
- Wykonawca zadań
- Pule wątków
- Kolejki zadań - przegląd kolejek blokujących
- Scheduling w pulach wątków
- Pule wątków a konsumpcja wyników
- Fork-Join API
- Flow - programowanie reaktywne
- "Promises" w Javie
- Stare API schedulingu
-
GUI a wielowątkowość w Javie- Problemy wielowątkowości w GUI
- Rozwiązania AWT - EventQueue
- Rozwiązania SWING
- Kończenie pracy
- Problemy wielowątkowości w GUI
-
Operacje atomowe w Javie- Czym jest atomowość?
- Problemy braku atomowości
- Unikanie problemu
- Gwarantowana atomowość w Javie
- Bariery pamięci - opis i rodzaje
- Wymuszanie barier pamięci
- CAS w API Javy (java.util.concurrent.atomic i java.lang.invoke)
- Spinlock - pętle CAS jako alternatywa synchronizacji
- Czym jest atomowość?
-
Zaawansowana współpraca między wątkami- Monitor a Lock (java.util.concurrent.locks)
- Gotowe realizacje Lock
- Współpraca między wątkami na Lock
- Condition jako alternatywa wait-notify
- Tworzenie własnych klas blokad
- Inne implementacje blokad (java.util.concurrent)
- Monitor a Lock (java.util.concurrent.locks)
-
Kolekcje a wielowątkowość w Javie- "Stare" kolekcje Java a wielowątkowość
- Collections API a wielowątkowość
- Kolekcje wielowątkowe java.util.concurrent
- Kolekcje blokujące
- Kolekcje kopiujące przy zapisie
- Kolekcje współbieżne
- Podsumowanie ze względu na interfejsy kolekcji
- Porównanie wydajności java.util.concurrent z Collecions API
- "Stare" kolekcje Java a wielowątkowość
-
Grabage Collector a wielowątkowość- Stop The World
- Model Pamięci
- Różne rodzaje Garbage Collector a wielowątkowość
- Różne rodzaje Garbage Collector a obszary pamięci
- Wybór Garbage Collector
- Wskazówki doboru Garbage Collector (GC)
- Stop The World
-
Asynchroniczne IO- Asynchroniczna praca na plikach
- Asynchroniczna praca na gniazdkach
- CompletableFuture w java.net.http (wprowadzenie)
- Asynchroniczna praca na plikach
-
Wzorce wielowątkowości a rozwiązania w Javie- Wzorce blokowania
- Wzorce współpracy
- Wzorce zarządzania wątkami
- Wzorce obsługi zdarzeń
- Wzorce wywołań asynchronicznych
- Wzorce inicjalizacji
- Wzorce blokowania
-
Wydajność aplikacji wielowątkowych w Javie- Współpraca zamiast odpytywania
- Ograniczanie blokowania
- Fork-Join granica opłacalności
- Prawo Amdahla - czyli ograniczenia zrównoleglenia
- Kontrola ilości wątków - pule wątków
- Tuning Javy dla wątków
- Współpraca zamiast odpytywania
Pobierz program w formacie PDF