Middle
Ar galima su submit paleisti tik Runnable ar taip pat ir Callable?
sobes.tech AI
Atsakymas iš AI
Java ExecutorService submit metodas gali priimti tiek Runnable, tiek Callable.
- Jei perduodate
Runnable, metodas grąžinaFuture<?>, kurį galima naudoti stebėti užduoties pabaigą, tačiau rezultatas busnull. - Jei perduodate
Callable<V>, tadasubmitgrąžinaFuture<V>, kurVyra užduoties grąžinamas rezultato tipas.
Pavyzdys:
ExecutorService executor = Executors.newFixedThreadPool(2);
// Runnable
Future<?> future1 = executor.submit(() -> System.out.println("Runnable užduotis"));
// Callable
Future<Integer> future2 = executor.submit(() -> {
Thread.sleep(1000);
return 42;
});
Integer result = future2.get(); // rezultatas bus 42
executor.shutdown();