Junior — Middle
Môžete uviesť hlavné primitives a nástroje poskytované v balíku java.util.concurrent na organizáciu viacvláknového vykonávania?
sobes.tech AI
Odpoveď od AI
V balíku java.util.concurrent je niekoľko kľúčových primitív a nástrojov na organizáciu viacvláknového vykonávania:
- Executor a ExecutorService — rozhrania na správu vláknového poolu a asynchrónne vykonávanie úloh.
- Future a CompletableFuture — na získanie výsledku asynchrónnych výpočtov.
- CountDownLatch — umožňuje jednému alebo viacerým vláknam čakať, kým iné vlákna vykonajú určité akcie.
- CyclicBarrier — synchronizuje viac vlákien, núti ich čakať na seba navzájom.
- Semaphore — obmedzuje počet vlákien, ktoré môžu súčasne pristupovať ku zdroju.
- ReentrantLock — rozšírený mechanizmus zámku s možnosťou pokusu o získanie a časovým limitom.
- Kolekcie vhodné pre viac vlákien (napríklad, ConcurrentHashMap, CopyOnWriteArrayList) — vlákno-bezpečné kolekcie.
- Atómové premenné (AtomicInteger, AtomicLong a ďalšie) — pre atomické operácie nad premennými bez použitia zámkov.
Príklad použitia ExecutorService:
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> {
System.out.println("Úloha vykonaná v samostatnom vlákne");
});
executor.shutdown();