Middle
Da li se pomoću submit može pokrenuti samo Runnable ili i Callable?
sobes.tech АИ
Одговор од АИ
Metoda submit iz ExecutorService u Javi može prihvatiti i Runnable i Callable.
- Ako prosledite
Runnable, metoda vraćaFuture<?>, koji se može koristiti za praćenje završetka zadatka, ali rezultat će bitinull. - Ako prosledite
Callable<V>, tadasubmitvraćaFuture<V>, gde jeVtip rezultata koji zadatak vraća.
Primer:
ExecutorService executor = Executors.newFixedThreadPool(2);
// Runnable
Future<?> future1 = executor.submit(() -> System.out.println("Runnable zadatak"));
// Callable
Future<Integer> future2 = executor.submit(() -> {
Thread.sleep(1000);
return 42;
});
Integer result = future2.get(); // rezultat će biti 42
executor.shutdown();