Sobes.tech
Middle

Csak Runnable-t vagy Callable-t is lehet indítani a submit segítségével?

sobes.tech MI

Válasz az MI-től

A Java ExecutorService-ben a submit metódus elfogadhat Runnable-t és Callable-t is.

  • Ha Runnable-t adunk át, a metódus egy Future<?>-t ad vissza, amit a feladat befejezésének nyomon követésére lehet használni, de az eredmény null lesz.
  • Ha Callable<V>-t adunk át, akkor a submit egy Future<V>-t ad vissza, ahol V a feladat által visszaadott eredmény típusa.

Példa:

ExecutorService executor = Executors.newFixedThreadPool(2);

// Runnable
Future<?> future1 = executor.submit(() -> System.out.println("Runnable feladat"));

// Callable
Future<Integer> future2 = executor.submit(() -> {
    Thread.sleep(1000);
    return 42;
});

Integer result = future2.get(); // az eredmény 42 lesz
executor.shutdown();