Salve
sto lavorando ad un progetto universitario che devo consegnare i primi di settembre ma sono da un giorno fermo su un errore, Mi date una mano.
Le specifiche del progetto sono queste.
Sulla parte dove bisogna tenere traccia di tutti i Thread non ho ancora lavorato per ora sto lavorando sulle classi che testano le soluzioni prodotte .....codice:Si realizzi una classe BufferLimitato che implementi un buffer FIFO a dimensione prefissata accessibile da piu' thread. La classe deve avere un costruttore che prende come parametro la dimensione del buffer. L'accesso al buffer (ai metodi che modificano il buffer) deve avvenire in mutua esclusione. La classe deve fornire i metodi: public void inserisci(Object) throws InterruptedException ● che inserisce un elemento nel buffer eventualmente bloccando il thread chiamante finché il buffer e' pieno. public Object rimuovi( ) throws InterruptedException ● che rimuove un elemento dal buffer (secondo la logica FIFO) eventualmente bloccando il chiamante finché il buffer e' vuoto Le segnature dei metodi possono essere estese, ad esempio con la keyword synchronized o con l’aggiunta di altre eccezioni, ma non possono essere rimosse le parti fornite da noi. La classe può avere altri metodi. Si dovrà fare uso di costrutti di sincronizzazione wait/notify, e qualsiasi costrutto di sincronizzazione che non sia synchronized o wait/notify dovrà essere implementato dallo studente (ad es. i semafori). Si potrà fare uso delle strutture dati messe a disposizione da Java (ad esempio la classe java.util.Vector), ma non della loro versione sincronizzata. Particolare attenzione dovrà essere dedicata alla gestione delle eccezioni. Si dovrà tenere traccia di tutti i thread in esecuzione (memorizzandoli ad es. in una struttura dati) e assicurandosi che l'applicazione termini solo dopo che tutti i thread sono terminati (utilizzando join). Non e' permesso uscire dall'applicazione utilizzando una System.exit. Il codice Java dovrà essere commentato e dovrà essere accompagnato da una breve relazione con la descrizione delle scelte implementative adottate. Si dovranno presentare delle classi che testano le soluzioni prodotte (le classi che implementano tali test vanno specificate chiaramente nella relazione) ed, implementare dei thread che usano il suddetto buffer inserendo e rimuovendo elementi.
In Pratica ho creato la classe BufferLimitato
Ho creato il MainStartcodice:public class BoundedBufferSynchronized{ private int in; // points to the next free position private int out; // points to the next full position private int count; private Object[] buffer; public BoundedBufferSynchronized(int size){ in = 0; out = 0; count = 0; buffer = new Object[size]; } public synchronized void insert(Object item){ } public synchronized Object remove(){ } private boolean isEmpty(){ return count == 0; } private boolean isFull(){ return count == buffer.length; } }
:master:codice:package santoro; public class Start { public static void main(String[] args) throws InterruptedException { OggettoDaCaricare Oget = new OggettoDaCaricare(); BufferLimitato BufferLimit = new BufferLimitato(100); ThreadInsert Thread1 = new ThreadInsert("Roby"); Thread1.start(); } }e gia qui iniziano i problemi.. In Eclipse BufferLimit Viene sottolineato e non capisco perché.!? Stesso problema con Oget....
Poi ho creato la classe
E mi da errore su BufferLimit ... Perche?codice:package santoro; public class ThreadInsert extends Thread { ThreadInsert(){ super( "name" ); } ThreadInsert(String name){ super( name ); } public void run(){ System.err.println(getName()+ " E' Partito"); BufferLimit.insert(Oget); } }
Nel metodo Run Non posso invocare il metodo in un altro oggetto! in questo caso Nel Run di ThreadInsert Non posso invocare un metodo di BufferLimitato? BufferLimit.insert(Oget)? Oget è un oggetto che non fa nulla...
Accetto ogni consiglio.

e gia qui iniziano i problemi.. In Eclipse BufferLimit Viene sottolineato e non capisco perché.!? Stesso problema con Oget....
Rispondi quotando