O szkoleniu
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.
- 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
Programiści Java chcący wytwarzać aplikacje wielowątkowe
Program szkolenia
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
Czas trwania
Prelegenci

Michał Podbielski - pierwsze kroki w programowaniu stawiał w podstawówce, jeszcze na ZX-Spectrum w języku BASIC, gdzie załapał bakcyla. Od tego momentu podporządkował IT całe swoje życie. Profil informatyczny w szkole średniej, na studiach dyplom z zakresu Inżynierii Oprogramowania zdobyty z oceną celującą i wyróżnieniem. Zawodowo zaczynał od budowy sieci Internetowych, potem rozwijał oprogramowanie w korporacji Siemens. Obecnie sprzedaje własne oprogramowanie, szkoli, zajmuje się konsultingiem i pisze książki fantasy.
Co robię na co dzień?
Trener, developer, przedsiębiorca, pisarz
Dlaczego lubię szkolić?
Od podstawówki miałem swoich podopiecznych, których przeciągałem z klasy do klasy, potem w średniej, na studiach. Uczę od 10tego roku życia i nie tylko potrafię, ale uwielbiam to robić.
Terminy i miejsca
To szkolenie nie ma aktualnych terminów. Wyślij zapytanie o nowe terminy bądź zapisz na powiadomienia o nowych terminach.
2. Komputer z dostępem do Internetu
Rejestracja
- udział w zajęciach
- materiały szkoleniowo-konferencyjne
- certyfikat uczestnictwa
Wydarzenie nieaktualne. Wypełnij formularz, aby zapytać o nowe terminy.
Organizator
Najczęściej zadawane pytania
- Chcesz wiedzieć więcej? Napisz do nas! lub zadzwoń!
Masz pytania? Napisz do nas
