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();