Sobes.tech
Junior — Middle

Jakie komponenty z pakietu concurrency używałeś w swoich projektach?

sobes.tech AI

Odpowiedź od AI

W projektach Java używałem następujących komponentów z pakietu java.util.concurrent:

  • ExecutorService — do zarządzania pulą wątków i wykonywania zadań asynchronicznych.
  • Future i Callable — do uzyskiwania wyników wykonania zadania w osobnym wątku.
  • CountDownLatch i CyclicBarrier — do synchronizacji wątków, np. oczekiwania na zakończenie kilku zadań.
  • ConcurrentHashMap — bezpieczna dla wątków implementacja mapy do równoległego dostępu.
  • Semaphore — do ograniczania liczby operacji wykonywanych jednocześnie.

Przykład użycia ExecutorService z Callable:

ExecutorService executor = Executors.newFixedThreadPool(2);
Callable<Integer> task = () -> {
    // jakaś zadanie obliczeniowe
    return 123;
};
Future<Integer> future = executor.submit(task);
try {
    Integer result = future.get();
    System.out.println("Wynik: " + result);
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
}
executor.shutdown();