Wielowątkowość w języku Java

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.

Dlaczego warto wziąć udział?
  • 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
Kto powinien wziąć udział?

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

5 dni: 40h

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.

1. Umiejętność programowania w języku Java
2. Komputer z dostępem do Internetu

Rejestracja

Szkolenie online
za osobę
4 450
+23% VAT
Cena zawiera:
  • udział w zajęciach
  • materiały szkoleniowo-konferencyjne
  • certyfikat uczestnictwa
Zapisz się

Organizator

Sages Sp. z o.o.
02-796 Warszawa
ul. Wąwozowa 11
woj. mazowieckie
FAQ

Najczęściej zadawane pytania

Prosimy o przejście do sekcji Zapisz się, aby wypełnić formularz zgłoszenia w wydarzeniu. Po jego wysłaniu organizator skontaktuje się celem potwierdzenia przyjęcia zgłoszenia i przekazania szczegółów organizacyjnych.

Kontakt

Masz pytania? Napisz do nas

Wypełnij formularz

Uzupełnij pole
Uzupełnij pole
Wybierz termin wydarzenia
Uzupełnij pole
Uzupełnij pole
Uzupełnij wiadomość
Potwierdź, że nie jesteś botem.
Musisz zaakceptować regulamin.

Dane kontaktowe

Sages Sp. z o.o.
02-796 Warszawa ul. Wąwozowa 11
Powiadomienia o nowych terminach

Zapisz się, aby otrzymywać powiadomienia o nowych terminach tego wydarzenia!