Sobes.tech
Middle

Vai ar submit var palaist tikai Runnable vai arī Callable?

sobes.tech AI

Atbilde no AI

Java ExecutorService metodes submit var pieņemt gan Runnable, gan Callable.

  • Ja tiek nodots Runnable, metode atgriež Future<?>, ko var izmantot, lai uzraudzītu uzdevuma pabeigšanu, bet rezultāts būs null.
  • Ja tiek nodots Callable<V>, tad submit atgriež Future<V>, kur V ir uzdevuma atgrieztā rezultāta tips.

Piemērs:

ExecutorService executor = Executors.newFixedThreadPool(2);

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

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

Integer result = future2.get(); // rezultāts būs 42
executor.shutdown();