Sobes.tech
Middle

Se poate lansa doar Runnable sau și Callable cu submit?

sobes.tech AI

Răspuns de la AI

Metoda submit din ExecutorService în Java poate accepta atât Runnable, cât și Callable.

  • Dacă se transmite un Runnable, metoda returnează un Future<?>, care poate fi folosit pentru a urmări finalizarea sarcinii, dar rezultatul va fi null.
  • Dacă se transmite un Callable<V>, atunci submit returnează un Future<V>, unde V este tipul rezultatului returnat de sarcină.

Exemplu:

ExecutorService executor = Executors.newFixedThreadPool(2);

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

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

Integer result = future2.get(); // rezultatul va fi 42
executor.shutdown();