Programowanie wielowątkowe w języku Java

Najbliższe terminy tego szkolenia
Skuteczność
Program szkolenia
- Wprowadzenie do programowania wielowątkowego
- Przykłady programów wykonywany liniowo
- Przykłady programów wykonywanych wielowątkowo
- Przykłady programów wykonywanych równolegle
- Wielowątkowość w Javie
- Definicja wątku
- Klasa Thread
- Interfejs Runnable
- Wyrażenie lambda
- Parametry wątków
- Nazwa
- Priorytet
- Stan
- Grupa
- Cykl życia wątków
- Stan NEW
- Stan RUNNABLE
- Stan WAITING
- Stan TIME_WAITING
- Stan BLOCKED
- Stan TERMINATED
- Współpraca między wątkami
- Praca równoległa
- Synchronizacja
- Wywłaszczanie
- Blokowanie
- Współdzielenie pamięci
- Definicja wątku
- Proces
- Proces a wątek
- Komunikacja między procesami
- Przegląd rozwiązań JEE
- Niskopoziomowe API procesów w Javie
- Koordynacja wątków
- Istotne metody koordynacji wątków
- start
- run
- sleep
- wait i time_wait
- join
- interrupt
- notify i notifyAll
- Sekcja krytyczna
- Synchronizacja wątków
- Blokowanie wątków
- Dobre praktyki
- Zagrożenia wynikające z wielowątkowości
- Ograniczenia cyklu życia
- deprecated w Thread
- Livelock
- Brak atomowości
- Zagrożenia blokowania wątków
- Monitory
- Hazard
- Starvation
- Deadlock
- Monitorowanie pracy wątków za pomocą narzędzia jConsole
- Istotne metody koordynacji wątków
- Zadania
- Wykonywanie zadań
- Omówienie interfejsów
- Callable
- Future
- Delayed
- Pule wątków
- Klasa Executor
- Klasa Executors
- Klasa ExecutorService
- Klasa ThreadPoolExecutor
- Klasa ScheduledThreadPoolExecutor
- Kolekcja w programowaniu wielowątkowym
- Cechy kolekcji wielowątkowych
- Kolekcje współbieżne i blokujące
- BlockingQueue
- LinkedBlokingQueue
- SynchronizedMap
- SynchronizedList
- Operacje atomowe
- Definicja atomowości
- Problemy wynikające z braku atomowości
- Unikanie problemów wynikających z braku atomowości
- Stałe
- Dane lokalne
- Bariery pamięci
- Stałe
- Synchronizacja
- Volatile
- lazySet
- CAS
- Klasy atomowe
- Operacje CAS w API
- ava.util.concurrent.atomic
- java.lang.invoke
- Zaawansowana koordynacja wątków
- Definicja i zastosowania monitora - Monitor
- Definicja i zastosowania blokady - Lock
- Zastosowania blokad w koordynacji wątków
- Implementacje klas blokujących
- Inne klasy blokujące
- Semaphore
- CountDownLatch
- CyclicBarrier
- Phaser
- Exchanger
- SynchronousQueue
- Asynchroniczna praca z operacjami I/O
- Asynchroniczna praca z plikami
- Asynchroniczna praca z TCP/IP
- Wzorce implementacji rozwiązań wielowątkowych
- Wzorce blokowania
- Wzorce współpracy
- Wzorce zarządzania wątkami
- Wzorce obsługi zdarzeń
- Wzorce wywołań asynchronicznych
- Wzorce inicjalizacji
- Przetwarzanie równoległe
- Przykłady algorytmów rekurencyjnych
- Metody zrównoleglenia algorytmów rekurencyjnych
- Wielowątkowość w GUI
- Wielowątkowość w JavaFX
- Klasa Task
- Klasa Service
- Problemy wynikające z wielowątkowości w GUI
- Dobre praktyki
Opis szkolenia
Szkolenie odbywa się na żywo z udziałem trenera. Nie jest to forma kursu video!Szkolenie przeznaczone dla programistów języka Java, którzy chcą rozszerzyć swoje kompetencje w kierunku implementacji rozwiązań wielowątkowych lub obliczeń równoległych. Szkolenie wprowadza od podstaw kluczowe aspekty programowania współbieżnego wykorzystując w tym celu gotowe bliblioteki oraz implementacje własnych niskopoziomowych rozwiązań.
Niezależnie czy dopiero rozpoczynasz z aplikacjami wielowątkowymi czy projektowałeś już wcześniej tego typu rozwiązania, na pewno szkolenie dostarczy Ci wiele przydatnej wiedzy popartej praktycznymi przykładami.

Sprawdź, co mówią o nas ci, którzy nam zaufali
Trenerzy kategorii Java










Jestem programistą z ponad 15-letnim doświadczeniem. W trakcie swojej kariery kilka razy zmieniałem obszary, z którymi miałem do czynienia (poczynając od niskopoziomowego programowania w C, poprzez fullstackowe zabawy w RubyOnRails, aż do prawdziwego backendu w Javie). Odkąd pamiętam, zawsze lubiłem dzielić się wiedzą z innymi i sprawiało to satysfakcję obu stronom tego procesu. Dlatego naturalną konsekwencją było to, iż zostałem kilka lat temu profesjonalnym trenerem IT.
Prowadzenie szkoleń pozwala mi również na każdorazowe powtórzenie i ugruntowanie swojej wiedzy, co potem bardzo przydaje się w pracy projektowej. Natomiast to, co daje mi największe zadowolenie jako trenerowi, to sytuacja gdy uczeń przerośnie mistrza - wtedy wiem, że dałem z siebie wszystko, a moja praca przyniosła owoce.