Sobes.tech
Middle

Môže sa pomocou submit spustiť iba Runnable alebo aj Callable?

sobes.tech AI

Odpoveď od AI

Metóda submit z ExecutorService v Jave môže akceptovať ako Runnable, tak Callable.

  • Ak odovzdáte Runnable, metóda vráti Future<?>, ktorý môžete použiť na sledovanie dokončenia úlohy, ale výsledok bude null.
  • Ak odovzdáte Callable<V>, potom submit vráti Future<V>, kde V je typ výsledku, ktorý úloha vráti.

Príklad:

ExecutorService executor = Executors.newFixedThreadPool(2);

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

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

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