Sobes.tech
Middle

Con submit si può avviare solo Runnable o anche Callable?

sobes.tech AI

Risposta dell'AI

Il metodo submit di ExecutorService in Java può accettare sia Runnable che Callable.

  • Se si passa un Runnable, il metodo restituisce un Future<?>, che può essere usato per monitorare il completamento del task, ma il risultato sarà null.
  • Se si passa un Callable<V>, allora submit restituisce un Future<V>, dove V è il tipo di risultato restituito dal task.

Esempio:

ExecutorService executor = Executors.newFixedThreadPool(2);

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

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

Integer result = future2.get(); // result sarà 42
executor.shutdown();