Junior — Middle
Ποια στοιχεία από το πακέτο concurrency έχετε χρησιμοποιήσει στα έργα σας;
sobes.tech AI
Απάντηση από AI
Σε έργα Java, έχω χρησιμοποιήσει τα ακόλουθα συστατικά από το πακέτο java.util.concurrent:
- ExecutorService — για τη διαχείριση της ομάδας νημάτων και την ασύγχρονη εκτέλεση εργασιών.
- Future και Callable — για την απόκτηση του αποτελέσματος εκτέλεσης μιας εργασίας σε ένα ξεχωριστό νήμα.
- CountDownLatch και CyclicBarrier — για τον συγχρονισμό νημάτων, π.χ., αναμονή για την ολοκλήρωση πολλών εργασιών.
- ConcurrentHashMap — ασφαλής για νήματα υλοποίηση ενός χάρτη για παράλληλη πρόσβαση.
- Semaphore — για τον περιορισμό του αριθμού των ταυτόχρονων λειτουργιών.
Παράδειγμα χρήσης του ExecutorService με Callable:
ExecutorService executor = Executors.newFixedThreadPool(2);
Callable<Integer> task = () -> {
// μια υπολογιστική εργασία
return 123;
};
Future<Integer> future = executor.submit(task);
try {
Integer result = future.get();
System.out.println("Αποτέλεσμα: " + result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
executor.shutdown();