Sobes.tech
Junior — Middle

Czy możesz wymienić podstawowe prymitywy i narzędzia dostępne w pakiecie java.util.concurrent do organizacji wielowątkowego wykonania?

sobes.tech AI

Odpowiedź od AI

W pakiecie java.util.concurrent znajduje się kilka kluczowych prymitywów i narzędzi do organizacji wielowątkowego wykonywania:

  • Executor i ExecutorService — interfejsy do zarządzania pulą wątków i wykonywania zadań asynchronicznych.
  • Future i CompletableFuture — do uzyskiwania wyników obliczeń asynchronicznych.
  • CountDownLatch — pozwala jednemu lub wielu wątkom czekać, aż inne wątki wykonają określone działania.
  • CyclicBarrier — synchronizuje kilka wątków, zmuszając je do wzajemnego oczekiwania.
  • Semaphore — ogranicza liczbę wątków, które mogą jednocześnie uzyskać dostęp do zasobu.
  • ReentrantLock — zaawansowany mechanizm blokowania z możliwością próbnego przejęcia i timeoutem.
  • Kolekcje współbieżne (np. ConcurrentHashMap, CopyOnWriteArrayList) — kolekcje bezpieczne dla wątków.
  • Zmienne atomowe (AtomicInteger, AtomicLong itp.) — do operacji atomowych na zmiennych bez użycia blokad.

Przykład użycia ExecutorService:

ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> {
    System.out.println("Zadanie wykonane w osobnym wątku");
});
executor.shutdown();