Sobes.tech
Middle

¿Con submit se puede lanzar solo Runnable o también Callable?

sobes.tech AI

Respuesta de la IA

El método submit de ExecutorService en Java puede aceptar tanto Runnable como Callable.

  • Si se pasa un Runnable, el método devuelve un Future<?>, que se puede usar para rastrear la finalización de la tarea, pero el resultado será null.
  • Si se pasa un Callable<V>, entonces submit devuelve un Future<V>, donde V es el tipo de resultado devuelto por la tarea.

Ejemplo:

ExecutorService executor = Executors.newFixedThreadPool(2);

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

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

Integer result = future2.get(); // result será 42
executor.shutdown();