Middle
Czy za pomocą submit można uruchamiać tylko Runnable, czy także Callable?
sobes.tech AI
Odpowiedź od AI
Metoda submit z ExecutorService w Java może przyjmować zarówno Runnable, jak i Callable.
- Jeśli przekażesz
Runnable, metoda zwracaFuture<?>, który można użyć do śledzenia zakończenia zadania, ale wynik będzienull. - Jeśli przekażesz
Callable<V>, tosubmitzwracaFuture<V>, gdzieVjest typem wyniku zwracanego przez zadanie.
Przykład:
ExecutorService executor = Executors.newFixedThreadPool(2);
// Runnable
Future<?> future1 = executor.submit(() -> System.out.println("Zadanie Runnable"));
// Callable
Future<Integer> future2 = executor.submit(() -> {
Thread.sleep(1000);
return 42;
});
Integer result = future2.get(); // wynik będzie 42
executor.shutdown();