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();