Sobes.tech
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ća Future<?>, koji se može koristiti za praćenje završetka zadatka, ali rezultat će biti null.
  • Ako prosledite Callable<V>, tada submit vraća Future<V>, gde je V tip 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();