Junior — Middle
Aké komponenty z balíčka concurrency ste použili vo svojich projektoch?
sobes.tech AI
Odpoveď od AI
V Java projektoch som použil nasledujúce komponenty z balíka java.util.concurrent:
- ExecutorService — na správu vláknového bazéna a asynchrónne vykonávanie úloh.
- Future a Callable — na získanie výsledku vykonania úlohy v samostatnom vlákne.
- CountDownLatch a CyclicBarrier — na synchronizáciu vlákien, napríklad, čakanie na dokončenie viacerých úloh.
- ConcurrentHashMap — vlákno-bezpečná implementácia mapy pre paralelný prístup.
- Semaphore — na obmedzenie počtu súčasne vykonávaných operácií.
Príklad použitia ExecutorService s Callable:
ExecutorService executor = Executors.newFixedThreadPool(2);
Callable<Integer> task = () -> {
// nejaká výpočtová úloha
return 123;
};
Future<Integer> future = executor.submit(task);
try {
Integer result = future.get();
System.out.println("Výsledok: " + result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
executor.shutdown();