Sobes.tech
Middle

Μπορείτε να εκτελέσετε μόνο Runnable με το submit ή και Callable;

sobes.tech AI

Απάντηση από AI

Η μέθοδος submit του ExecutorService στην Java μπορεί να δέχεται τόσο 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();