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 budenull. - Pokud předáte
Callable<V>,submitvrátíFuture<V>, kdeVje 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();