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