Sobes.tech
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();