Un altro modo per risolvere il filosofo da pranzo (serve un punto nella giusta direzione) [chiuso]
-
03-07-2019 - |
Domanda
per un incarico di programmazione mi è stato chiesto di implementare una soluzione al problema del filosofo da pranzo. Devo farlo in due modi:
- Utilizza il meccanismo wait () e notifyAll ()
- Utilizzo di una struttura di dati simultanei esistente fornita nell'API Java
Ho già completato la prima implementazione. Di quale struttura dati simultanea sta parlando il mio professore per il secondo passaggio? Non ricordo che abbia menzionato nulla. Non ho bisogno di alcun codice sorgente, solo un puntatore nella giusta direzione.
Soluzione
Potresti voler guardare java.util.concurrent pagina Javadoc per avere alcune idee. Queste non sono le uniche strutture di dati simultanee (alcune delle strutture di dati java.util hanno anche il supporto della concorrenza integrato) ma questo è un buon punto di partenza.
Collections.synchronizedList
non è ciò che definirei "una struttura di dati simultanea esistente" - è un wrapper per strutture dati che non supportano la concorrenza.
Altri suggerimenti
Forse intendeva avvolgere le raccolte Java in wrapper sincronizzati, ad es. utilizzando Collections.synchronizedList ()
o le strutture di dati sempre sincronizzate in java.util.concurrent
, ad es. CopyOnWriteArrayList
.
Non proprio una struttura di dati ... ma nelle vicinanze di ciò di cui potresti aver bisogno http://java.sun.com/javase/6/docs/api/java/util/concurrent/Semaphore.html ?
Esiste una libreria simultanea nell'API Java.
Ha alcune raccolte
Guarda il pacchetto java.util.concurrent
http: / /java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html