CodeGym
Promocja
Nauka
Kursy
Zadania
Ankiety & quizy
Gry
Pomoc
Harmonogram
Społeczność
Użytkownicy
Forum
Czat
Artykuły
Historie sukcesu
Aktywność
Opinie
Subskrypcje
Jasny motyw

Lekcje

  • Opinie
  • O nas
Start
Rozpocznij naukę
Rozpocznij naukę teraz
  • Mój postęp
  • Kursy
  • Mapa Questów
  • Lekcje
  • Kombinowanie CompletableFuture: thenCombine, allOf, anyOf

    JAVA 25 SELF
    Poziom 55,Lekcja 2
    Jak uruchamiać zadania równolegle i łączyć wyniki za pomocą CompletableFuture: łączenie dwóch wyników przez thenCombine/ thenCombineAsync, oczekiwanie zestawu zadań przez allOf, reakcja na najszybszą odpowiedź przez anyOf. Przejrzymy sygnatury, praktyczne przykłady z supplyAsync, nieblokujące przetwarzanie ( thenAccept, thenRun), a także niuanse błędów i ich obsługę ( exceptionally, handle, whenComplete). Na końcu — zwięzła tabela porównawcza metod.
    Dostępne
  • Obsługa błędów w kodzie asynchronicznym: exceptionally, handle

    JAVA 25 SELF
    Poziom 55,Lekcja 3
    Jak bezpiecznie łapać i obsługiwać wyjątki w łańcuchach CompletableFuture: omawiamy role exceptionally (wartość zapasowa przy błędzie), handle (uniwersalny handler sukcesu/błędu) i whenComplete (działania uboczne bez zmiany wyniku). Omówimy, dlaczego bezpośrednie wywołanie get()/ join() owija przyczyny w ExecutionException/ CompletionException, jak łączyć etapy ( thenApply, thenAccept) i jakich typowych błędów unikać.
    Dostępne
  • thenCompose + niestandardowy Executor + timeouty

    JAVA 25 SELF
    Poziom 55,Lekcja 4
    Jak poprawnie „sklejać” asynchroniczne kroki w CompletableFuture za pomocą thenCompose i kiedy wystarczy thenApply; jak i po co podłączać własną pulę wątków przez ExecutorService (zamiast ForkJoinPool.commonPool()); jak zabezpieczyć łańcuchy przed „wiecznym oczekiwaniem” przy użyciu orTimeout i completeOnTimeout. Na końcu — praktyczny przykład z niestandardowym Executor, thenCompose i timeoutem, a także typowe błędy i ich rozwiązania.
    Dostępne
  • Asynchroniczne I/O: AsynchronousFileChannel (NIO2)

    JAVA 25 SELF
    Poziom 56,Lekcja 0
    W tym wykładzie omawiamy asynchroniczne wejście/wyjście (AIO) w Java NIO.2: czym różni się od synchronicznego I/O, jak pracować z AsynchronousFileChannel, uruchamiać operacje odczytu/zapisu poprzez Future i CompletionHandler, a także jaki wpływ ma wybór puli wątków ExecutorService. W praktyce zobaczymy otwieranie kanału przez open, metody read/ write, schemat współdziałania oraz częste błędy.
    Dostępne
  • Future, CompletionHandler: obsługa zakończenia operacji

    JAVA 25 SELF
    Poziom 56,Lekcja 1
    Jak w Javie obsługiwać zakończenie asynchronicznych operacji NIO2: „obietnice” przez Future i wywołania zwrotne przez CompletionHandler. Omówimy sygnatury read/ write w AsynchronousFileChannel, blokujące pobieranie wyniku przez get() i sprawdzanie isDone(), a także nieblokującą obsługę w completed()/ failed(). Pokażemy praktyczne przykłady odczytu/zapisu i krótkie porównanie podejść.
    Dostępne
  • Asynchroniczne przetwarzanie plików tekstowych

    JAVA 25 SELF
    Poziom 56,Lekcja 2
    Ćwiczymy asynchroniczny I/O w Javie: czytamy duże pliki tekstowe blokami do ByteBuffer przez AsynchronousFileChannel, poprawnie przekształcamy bajty w znaki za pomocą CharsetDecoder, zapisujemy dane z powrotem asynchronicznie (przez Future lub CompletionHandler). Omawiamy problem „rozcięcia” wielobajtowych znaków (np. "UTF-8"), zliczanie wierszy w locie, dobór kodowań i typowe błędy przy pracy z buforami i kanałami.
    Dostępne
  • Obsługa błędów w asynchronicznym IO, anulowanie operacji

    JAVA 25 SELF
    Poziom 56,Lekcja 3
    Jak poprawnie przechwytywać i obsługiwać błędy w asynchronicznym wejściu/wyjściu Javy: callbacki CompletionHandler z metodami completed/ failed, logowanie i powiadomienia. Omawiamy anulowanie operacji przez Future i cancel( boolean), konsekwencje dla get() i CancellationException, a także praktyczne wskazówki: try-with-resources, synchronizację z CountDownLatch/ CompletableFuture i zwalnianie zasobów.
    Dostępne
  • Analiza błędów podczas asynchronicznej pracy z plikami

    JAVA 25 SELF
    Poziom 56,Lekcja 4
    Praktyczna analiza pułapek przy pracy z asynchronicznym wejściem/wyjściem plików w Java NIO: poprawne zarządzanie buforami ByteBuffer (właściwości position/ limit, wywołania flip(), clear(), compact()), wyścigi danych przy równoległych operacjach z AsynchronousFileChannel, zamykanie zasobów ( channel.close(), try-with-resources), obsługa błędów w CompletionHandler (metoda failed(...)), zarządzanie cyklem życia operacji poprzez Future<Integer> i synchronizację z CountDownLatch, poprawna obsługa kodowań przez CharsetDecoder, a także wybór odpowiedniej puli wątków ExecutorService.
    Dostępne
  • Wątki kontra wątki wirtualne: różnice, zalety

    JAVA 25 SELF
    Poziom 57,Lekcja 0
    Wyjaśniamy, czym różnią się wątki platformowe od wirtualnych: jak działa model „ Platform Thread → OS” i dlaczego jest ciężki, co zmieniają wątki wirtualne ( Virtual Thread) działające na wierzchu carrier threads, oraz jak daje to skalowalność bez reaktywnego „spaghetti”. Zobaczymy praktykę z Thread.ofVirtual(), porównamy zachowanie zadań I/O‑bound i CPU‑bound, poruszymy zgodność (blokujące wywołania takie jak InputStream.read, Socket.accept) oraz typowe błędy (stare mechanizmy synchronizacji, oczekiwanie „magicznego przyspieszenia”).
    Dostępne
  • Tworzenie wirtualnych wątków: Thread.ofVirtual().start()

    JAVA 25 SELF
    Poziom 57,Lekcja 1
    Praktyka pracy z wirtualnymi wątkami w Java 21: czym różnią się od wątków platformowych, jak uruchamiać je przez Thread.startVirtualThread(...) i Thread.ofVirtual().start(...), kiedy nadal ma sens new Thread(...) lub Thread.ofPlatform(), oraz jak masowo wykonywać zadania za pomocą Executors.newVirtualThreadPerTaskExecutor(). Omówimy oczekiwanie na zakończenie przez join(), obsługę błędów z Future i ExecutionException, a także typowe błędy przy korzystaniu z Virtual Threads.
    Dostępne
  • Skalowalność i wydajność Virtual Threads

    JAVA 25 SELF
    Poziom 57,Lekcja 2
    Praktyczne porównanie wątków platformowych Thread i wątków wirtualnych w Java 21: jak JVM dzięki „ nośnikom” (carrier threads) wykonuje setki tysięcy zadań przy minimalnym zużyciu pamięci, gdzie wątki wirtualne błyszczą (I/O‑bound), a gdzie nie (CPU‑bound). Omówimy ograniczenia ( synchronized, blokady natywne), najlepsze praktyki ( Executors.newVirtualThreadPerTaskExecutor()), monitoring przez JVisualVM i Java Flight Recorder, a także typowe błędy przy przejściu na Virtual Threads.
    Dostępne
  • Używanie Executora z wirtualnymi wątkami

    JAVA 25 SELF
    Poziom 57,Lekcja 3
    Omówimy, jak uruchamiać jedno zadanie w jednym wirtualnym wątku za pomocą Executors.newVirtualThreadPerTaskExecutor() (Java 21), czym to się różni od klasycznych pul ( newFixedThreadPool, newCachedThreadPool), jak poprawnie kończyć pracę przez shutdown() i awaitTermination(...), odbierać wyniki zadań przez Future oraz gdzie wirtualne wątki dają największy zysk (masowy I/O, serwery WWW, testy obciążeniowe). Na końcu — typowe błędy i niuanse.
    Dostępne
  • 1
  • ...
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
Nauka
  • Rejestracja
  • Kurs Java
  • Pomoc w zadaniach
  • Cennik
  • Składnia Javy
Społeczność
  • Użytkownicy
  • Artykuły
  • Forum
  • Czat
  • Historie sukcesu
  • Aktywność
  • Program partnerski
Firma
  • O nas
  • Kontakt
  • Opinie
  • Dla mediów
  • CodeGym dla EDU
  • FAQ
  • Wsparcie
CodeGymCodeGym to kurs online do nauki programowania w Javie od podstaw. Kurs idealny do opanowania Javy dla początkujących. Zawiera 1200+ zadań z natychmiastową weryfikacją oraz niezbędny zakres teorii podstaw Javy. Aby pomóc Ci w nauce, wprowadziliśmy zestaw funkcji motywacyjnych: quizy, projekty programistyczne, materiały o efektywnej nauce i poradnik kariery dla programisty Java.
Obserwuj nas
Język interfejsu
English Deutsch Español हिन्दी Français Português
Polski
বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"Programiści są tworzeni, nie rodzą się" © 2026 CodeGym
MastercardVisa
"Programiści są tworzeni, nie rodzą się" © 2026 CodeGym