Sobes.tech
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ąžina Future<?>, kurį galima naudoti stebėti užduoties pabaigą, tačiau rezultatas bus null.
  • Jei perduodate Callable<V>, tada submit grąžina Future<V>, kur V yra 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();