Sobes.tech
Middle

Jak fungují Executor v Java?

sobes.tech AI

Odpověď od AI

Executor — je rozhraní v jazyce Java, které definuje smlouvu pro spouštění úloh v rámci vlákna. Místo explicitního vytváření vláken pro každou úlohu předáváte úlohy vykonavatelům, kteří spravují vytváření, používání a ničení vláken.

Hlavní výhody:

  • Správa vláken: Poskytuje jednotný způsob správy vlákna, čímž se vyhýbá ručnímu vytváření a synchronizaci vláken.
  • Efektivita: Opakovaně využívá existující vlákna, snižuje náklady na jejich vytváření a ničení.
  • Výkon: Zlepšuje výkon a odezvu aplikací díky asynchronnímu spouštění úloh.

Executor má jednu metodu:

// Spustí zadaný příkaz v nějakém budoucím čase.
void execute(Runnable command);

Často používané podtřídy:

  • ExecutorService: Rozšiřuje Executor a poskytuje další metody pro správu životního cyklu vykonavatele a získávání výsledků úloh (například přes Future).
  • ScheduledExecutorService: Rozšiřuje ExecutorService a umožňuje spouštění úloh s zpožděním nebo podle plánu.

Třída Executors poskytuje tovární metody pro vytváření různých typů vykonavatelů:

// Vytvoří vlákno s pevně stanoveným počtem vláken.
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);

// Vytvoří vlákno, které může dynamicky upravovat počet vláken.
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();

// Vytvoří plánovač vláken, který může spouštět úlohy podle plánu.
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);

Příklad použití:

// Vykonavatel
ExecutorService executor = Executors.newFixedThreadPool(2);

// Úloha k provedení
Runnable task = new Runnable() {
    @Override
    public void run() {
        // Kód úlohy
        System.out.println("Úloha běží ve vlákně: " + Thread.currentThread().getName());
    }
};

// Odeslání úlohy vykonavateli
executor.execute(task);

// Ukončení vykonavatele (nutné k uvolnění zdrojů)
executor.shutdown();

Při volání execute() vykonavatel převezme úlohu (Runnable) a přiřadí ji jednomu ze svých vláken k provedení. Správa rozdělení úloh mezi vlákna a jejich životní cyklus je řízena vykonavatelem.