Sobes.tech
Middle

Կարող եք միայն Runnable-ը գործարկել submit-ով, թե նաև Callable-ը?

sobes.tech AI

Պատասխան AI-ից

Java-да ExecutorServicesubmit մեթոդը կարող է ընդունել ինչպես 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();