Sobes.tech
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();