PDA

View Full Version : Progettino java concorrente


Banana Joe
18-10-2007, 17:27
Buonasera a tutti, sono nuovo di questo forum e inizio subito con una richiesta di :help: ..diciamo..disperata!
Praticamente dovrei fare un programmino in java sfruttando l'utilizzo di thread..e purtroppo dev'essere svolto in 4 giorni e nn è semplice :doh:
Qualcuno riuscirebbe ad aiutarmi per favore?Anche con una giusta ricompensa..
Vi ringrazio x l'attenzione!

isAlreadyInUse
18-10-2007, 17:46
Bhe oltre a sfruttare i thread deve fare qualcosa in paricolare?

Banana Joe
18-10-2007, 18:11
In particolare no..deve sfruttare la concorrenza dei thread!Se vuoi posso farti vedere qualche esempio d'esame.. Un esempio invece classico ke ci è stato spiegato a lezione è stato quello del produttore e del consumatore, nn so se l'hai mai visto o sentito..

isAlreadyInUse
18-10-2007, 18:13
Posta

ValerySOD
18-10-2007, 18:25
Ciao, sono un'amica di BananaJoe, nella sua stessa situazione...ecco uno dei temi d'esame!

Si realizzi una simulazione composta da 20 studenti e 2 professori.
Agli studenti è richiesto un elaborato che verrà pubblicato online. A tale fine devono
monitorare un sito web per vedere se esiste un elaborato. Nel caso non ci sia ancora, il
sito permette di registrarsi (sospendersi) e di ricevere una comunicazione quando questo
viene pubblicato.
Una volta pubblicato un elaborato questo deve essere svolto entro 50 secondi.
Lo studente impiega tra i 30 e i 60 secondi per svolgere l'elaborato e poi spedisce
l'elaborato nel sito. Se la spedizione non è avvenuta rispettando la deadline riceve esito
negativo.
I due professori vengono risvegliati alla scadenza della deadline da un messaggio man-
dato dal sito e immediatamente cominciano la correzione, prelevando un elaborato alla
volta. Per ogni correzione ci mettono tra i 5 e i 10 secondi. Il voto è casuale (tra 0 e 3).
Il primo professore che finisce aspetta il secondo quindi si fa dare i risultati calcolati
dal secondo e pubblica (stampa a video) l'elenco.
L'elenco deve essere in questo formato:
Titolo Elaborato - istante di pubblicazione elaborato
e per ogni studente che ha consegnato
Nome Studente - istante in cui ha consegnato - tempo di correzione - nome
prof che lo ha corretto - voto

Che ne dici?

morskott
18-10-2007, 18:28
Bhe, per creare un programma che faccia uso di threads in java prima di tutto bisogna creare una classe che implementi Runnablepublic class MioPrimoThread implements Runnable, quest'interfaccia ha un solo metodo da implementarepublic void run()dentro al quale va messo tutto il codice che il thread andrà ad eseguire. Passando alla creazione del thread si deve prima creare l'oggetto Runnable che si è definito prima, metterlo come parametro nella costruzione di un oggetto Thread e invocarci il metodo start()public void avviaThread(){
Thread mioThread=new Thread(new MioPrimoThread());
mioThread.start();
}.
Per gestire la concorrenza son presenti le normali primitive di semaforizzazione/lock/monitor/barrier/etc etc nel package "java.util.concurrent" e sottopackage, dove vengono fornite anche versioni thread-safe dei vari tipi primitivi di java (tipo il AtomicBoolean che ha built-in la gestione della concorrenza).
Se vuoi info più specifiche posta.

morskott
18-10-2007, 18:31
Ciao, sono un'amica di BananaJoe, nella sua stessa situazione...ecco uno dei temi d'esame!

Si realizzi una simulazione composta da 20 studenti e 2 professori.
Agli studenti è richiesto un elaborato che verrà pubblicato online. A tale fine devono
monitorare un sito web per vedere se esiste un elaborato. Nel caso non ci sia ancora, il
sito permette di registrarsi (sospendersi) e di ricevere una comunicazione quando questo
viene pubblicato.
Una volta pubblicato un elaborato questo deve essere svolto entro 50 secondi.
Lo studente impiega tra i 30 e i 60 secondi per svolgere l'elaborato e poi spedisce
l'elaborato nel sito. Se la spedizione non è avvenuta rispettando la deadline riceve esito
negativo.
I due professori vengono risvegliati alla scadenza della deadline da un messaggio man-
dato dal sito e immediatamente cominciano la correzione, prelevando un elaborato alla
volta. Per ogni correzione ci mettono tra i 5 e i 10 secondi. Il voto è casuale (tra 0 e 3).
Il primo professore che finisce aspetta il secondo quindi si fa dare i risultati calcolati
dal secondo e pubblica (stampa a video) l'elenco.
L'elenco deve essere in questo formato:
Titolo Elaborato - istante di pubblicazione elaborato
e per ogni studente che ha consegnato
Nome Studente - istante in cui ha consegnato - tempo di correzione - nome
prof che lo ha corretto - voto

Che ne dici?

A caldo dico che è un bel po complessuccio!!!!! Poi magari se ci penso meglio mi viene qualcosa

isAlreadyInUse
18-10-2007, 18:34
Progettino interessante, credo che lo faro :D
...e si mi diverto con poco..

ValerySOD
18-10-2007, 18:39
Progettino interessante, credo che lo faro :D
...e si mi diverto con poco..

vai vai, fallo! Poi ti passo la soluzione se vuoi =D
Quello che dovremmo fare noi esce martedi prossimo, ed è da consegnare entro venerdi....se qualcuno vuole farsi avanti è ben accetto!:D :help: :help:

isAlreadyInUse
18-10-2007, 18:40
Allora aspetto a martedi per la prox traccia, intanto mi trastullo con quello :D

ValerySOD
18-10-2007, 18:41
Bhe, per creare un programma che faccia uso di threads in java prima di tutto bisogna creare una classe che implementi Runnablepublic class MioPrimoThread implements Runnable, quest'interfaccia ha un solo metodo da implementarepublic void run()dentro al quale va messo tutto il codice che il thread andrà ad eseguire. Passando alla creazione del thread si deve prima creare l'oggetto Runnable che si è definito prima, metterlo come parametro nella costruzione di un oggetto Thread e invocarci il metodo start()public void avviaThread(){
Thread mioThread=new Thread(new MioPrimoThread());
mioThread.start();
}.
Per gestire la concorrenza son presenti le normali primitive di semaforizzazione/lock/monitor/barrier/etc etc nel package "java.util.concurrent" e sottopackage, dove vengono fornite anche versioni thread-safe dei vari tipi primitivi di java (tipo il AtomicBoolean che ha built-in la gestione della concorrenza).
Se vuoi info più specifiche posta.

Il problema non è tanto sapere che uno deve implementare run() piuttosto che altre regole...il problema è che non capiamo come e dove va eseguita la sincronizzazione, su che oggetti va fatta...insomma il problema parte sempre dal testo dell'esercizio! Non è facile capire tutto dal testo...:muro:

Banana Joe
18-10-2007, 18:45
Ecco sì..direi ke è bello complesso..e il problema è anke farlo in pochissimo tempo! Ora devo scappare..ValerySOD potrà darti altre informazioni e postare qualche altro esempio d'esame!
Tornerò domani a controllare il forum..grazie mille cmq x l'aiuto morskott!Se sei disposto ad aiutarci x il prossimo progetto ben venga!
Invece isAlreadyInUse..nn ho capito se fai quel progettino x aiutarci..se sì puoi aiutarci quando esce il nuovo tema d'esame?
Grazie e buona serata!

Sorry..nn avevo visto il post di isAlreadyInUse ke diceva di avere intenzione di fare anke il prossimo ke uscirà Martedì..

lattone
18-10-2007, 20:48
Ora che ho letto con più attenzione dico che non è così complicato come sembra:

classe main
thread studente
thread professore
classe sitoWeb

sitoweb contiene delle strutture dati (magari Vector) per pubblicare e raccogliere gli elaborati. Strutture dati condivise dai thread per cui synchonized.
Bisogna usare le wait() e le notify() per gestire le segnalazioni di elaborato online, consegna, correzione, ecc...

franksisca
18-10-2007, 20:59
ragazzi, non è molto compesso, certo non è banale, ma nemmeno impossibile.


vedete la situazione reale, non pensatela al pc, vedete cosa succcederebbe realmente, è il modo migliore per capire le strutture da sincronizzare.


dove studiate???

Banana Joe
19-10-2007, 00:14
Purtroppo x noi questo è un duro ostacolo..nn è semplice, ma sono contento di aver trovato delle persone ke nn lo considerano impossibile!
Allora Martedì quando uscirà il nuovo progetto possiamo contare sul vostro aiuto? Grazie ancora!
Ah dimenticavo..studiamo a Milano..

franksisca
19-10-2007, 00:24
Purtroppo x noi questo è un duro ostacolo..nn è semplice, ma sono contento di aver trovato delle persone ke nn lo considerano impossibile!
Allora Martedì quando uscirà il nuovo progetto possiamo contare sul vostro aiuto? Grazie ancora!
Ah dimenticavo..studiamo a Milano..

ti dò un consiglio, provate a risolverlo voi, e noi vi diamo suggerimenit....che esame è??? politecnico???

oppure semplicemente scuola superiore???

ally
19-10-2007, 07:25
...mi iscrivo...programma interessante...

...ciao...

Banana Joe
19-10-2007, 09:31
ti dò un consiglio, provate a risolverlo voi, e noi vi diamo suggerimenit....che esame è??? politecnico???

oppure semplicemente scuola superiore???

No no..progettino per un esame universitario! Nn sapevo ke alle superiori facessero anke queste cose..aiut!
Cmq grazie mille a tutti quelli ke saranno disponibili x aiutarci..a Martedì

ValerySOD
20-10-2007, 10:30
Grazie a tutti quelli che vogliono darci una mano! Volete che vi metta la soluzione dell'esercizio che ho postato l'altro giorno? giusto per vedere in che modo lo "impostano" i prof...per farlo come piace a loro insomma =D

isAlreadyInUse
20-10-2007, 10:59
POSTA PURE

ValerySOD
20-10-2007, 14:47
ecco il primo pezzo, ho caricato i tre files (img1, img2, img3)

ValerySOD
20-10-2007, 14:49
secondo pezzo

ValerySOD
20-10-2007, 14:52
ecco tutto!
Un'ulteriore domanda..non è che per caso, visto che più persone si sono offerte di aiutarci, sareste disposti a fare il progetto separatamente? Cioè, una persona aiuta me e una persona aiuta BananJoe! Il progetto va consegnato singolarmente e se trovano somiglianze la bocciatura è assicurata..!

isAlreadyInUse
20-10-2007, 15:01
Ma posta il codice

ValerySOD
20-10-2007, 15:16
non riesco a postarlo come testo, è in un pdf e se copio e incollo fa un macello con le parentesi e i numeri di riga...ho messo le gif del codice, non si vedono?

ally
20-10-2007, 15:37
non riesco a postarlo come testo, è in un pdf e se copio e incollo fa un macello con le parentesi e i numeri di riga...ho messo le gif del codice, non si vedono?

...postalo con i numeri di riga...almeno è leggibile...

...ciao...

isAlreadyInUse
20-10-2007, 15:42
Allega i l pdf allora

ValerySOD
21-10-2007, 09:35
il PDF è troppo grosso, non me lo fa caricare...non posso scrivere a manoil codice xkè son 7 pagine e non finisco più! E fare il copia incolla dà problemi con le parentesi, non si capisce niente davvero...se qualcuno è interessato glielo passo via mail!
Allora cosa ne dite di dividerci, qualcuno aiuta me e qualcuno Banana? (anke dietro ricompensa, è chiaro!)

cionci
21-10-2007, 16:15
Questa sezione non può ospitare richieste di questo tipo. Evidentemente un progettino è impossibile se non ci si sbatte la testa sopra, infatti li danno proprio per imparare, non certo perché vi debba tornare facile farlo.
Chiudo