Sobes.tech
Middle

Lze pomocí submit spustit pouze Runnable nebo i Callable?

sobes.tech AI

Odpověď od AI

Metoda submit z ExecutorService v Java může přijímat jak Runnable, tak Callable.

  • Pokud předáte Runnable, metoda vrátí Future<?>, který lze použít ke sledování dokončení úkolu, ale výsledek bude null.
  • Pokud předáte Callable<V>, submit vrátí Future<V>, kde V je typ výsledku vráceného úkolem.

Příklad:

ExecutorService executor = Executors.newFixedThreadPool(2);

// Runnable
Future<?> future1 = executor.submit(() -> System.out.println("Runnable úkol"));

// Callable
Future<Integer> future2 = executor.submit(() -> {
    Thread.sleep(1000);
    return 42;
});

Integer result = future2.get(); // výsledek bude 42
executor.shutdown();