Sobes.tech
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 zwraca Future<?>, który można użyć do śledzenia zakończenia zadania, ale wynik będzie null.
  • Jeśli przekażesz Callable<V>, to submit zwraca Future<V>, gdzie V jest 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();