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();