Une autre façon de résoudre le philosophe de salle à manger (besoin d'un point dans la bonne direction) [fermé]
-
03-07-2019 - |
Question
pour un travail de programmation, on m'a demandé de mettre en œuvre une solution au problème de Dining Philosopher. Je dois le faire de deux manières:
- Utiliser les mécanismes wait () et notifyAll ()
- Utilisation d'une structure de données simultanée existante fournie dans l'API Java
J'ai déjà terminé la première mise en œuvre. De quelle structure de données simultanée mon professeur parle-t-il pour la deuxième étape? Je ne me souviens pas qu'elle ait mentionné quoi que ce soit. Je n'ai besoin d'aucun code source, juste d'un pointeur dans la bonne direction.
La solution
Vous voudrez peut-être consulter java.util.concurrent page Javadoc pour obtenir des idées. Ce ne sont pas les seules structures de données simultanées (certaines des structures de données java.util ont également une prise en charge intégrée de la simultanéité), mais il s'agit d'un bon point de départ.
Collections.synchronizedList
n'est pas ce que j'appellerais "une structure de données simultanée existante" " - C’est un wrapper pour les structures de données qui ne supportent pas la simultanéité.
Autres conseils
Peut-être voulait-elle dire envelopper les collections Java dans des wrappers synchronisés, par exemple. à l'aide de Collections.synchronizedList ()
, ou des structures de données toujours synchronisées dans java.util.concurrent
, par exemple. CopyOnWriteArrayList
.
Pas vraiment une structure de données ... mais au voisinage de ce dont vous pourriez avoir besoin http://java.sun.com/javase/6/docs/api/java/util/concurrent/Semaphore.html ?
Il existe une bibliothèque simultanée dans l'API Java.
Il a des collections
Regardez le package java.util.concurrent
http: / /java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html