Sobes.tech
Middle

Може ли с помощта на submit да стартирате само Runnable или също и Callable?

sobes.tech AI

Отговор от AI

Методът submit на ExecutorService в Java може да приема както Runnable, така и Callable.

  • Ако подадете Runnable, методът връща Future<?>, който може да се използва за проследяване на завършването на задачата, но резултатът ще бъде null.
  • Ако подадете Callable<V>, тогава submit връща Future<V>, където V е типът на резултата, който задачата връща.

Пример:

ExecutorService executor = Executors.newFixedThreadPool(2);

// Runnable
Future<?> future1 = executor.submit(() -> System.out.println("Runnable задача"));

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

Integer result = future2.get(); // резултатът ще бъде 42
executor.shutdown();