Sobes.tech
Middle

შესაძლებელია მხოლოდ Runnable-ის გაშვება submit-ით თუ ასევე Callable-ის?

sobes.tech AI

პასუხი AI-სგან

Java-да ExecutorService-ის submit მეთოდი შეიძლება მიიღოს როგორც 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();