PDA

Visualizza la versione completa : [java] sincronizzazione su variabile


citrus
04-09-2004, 18:14
ciao a tutti..
devo scrivere un piccolo programmino in cui ho bisogno di fare delle sincronizzazioni...
ho quasi finito ma ho anche il cervello praticamente andato e mi sono incartato su una cosa stupida da cui non riesco a muovermi...

praticamente ho 5 thread e una varibale condivisa, solo uno di questi thread scrive sulla variabile mentre tutti gli altri si limitano a leggere.
la variabile è una specie di clock, il thread che ci scrive la incerementa ogni volta che esegue una data operazione, mentre gli altri la devono solo leggere per farci dei calcoli....
secondo voi è necessario che sincronizzi i suddetti thread sulla variabile?

(secondo me no però ho mille dubbi)
aiutatemi mi sono ncartato alla grande!!! :confused:

grazie
citru(llu)s
:rollo:

netarrow
05-09-2004, 12:45
potresti fare due metodi così:



public synchronized void setVar(int i) {
var = i;
}

public synchronized int getVar() {
return var;
}


era questo che volevi?

:ciauz:

unomichisiada
05-09-2004, 13:31
potresti fare due metodi così:

public synchronized void setVar(int i) {
var = i;
}

public synchronized int getVar() {
return var;
}
era questo che volevi?
Si questo è il come farlo,ma lui chiedeva un consiglio su l'opportunità di farlo,io ho letto la sua domanda ed a occhi e croce avrei risposto che la sincro non è necessaria,ma non sono sicuro quindi la cosa interessa pure me.

netarrow
05-09-2004, 14:02
Originariamente inviato da unomichisiada
Si questo è il come farlo,ma lui chiedeva un consiglio su l'opportunità di farlo,io ho letto la sua domanda ed a occhi e croce avrei risposto che la sincro non è necessaria,ma non sono sicuro quindi la cosa interessa pure me.

Secondo me bisogna è da evitare che 2 thread entrino nel monitor di uno stesso ogetto, in particolare sarebbe da evitare che mentre uno legge l'altro scrive, quindi io sincronizzerei.

:ciauz:

unomichisiada
05-09-2004, 14:09
Secondo me bisogna che evitare che 2 thread entri nel monitor di uno stesso ogetto, in particolare sarebbe da evitare che mentre uno legge l'altro scrive, quindi io sincronizzerei.
Beh la sincronizzazione comporta un lavoro in più da parte del programma per essere gestita quindi se non è strettamente necessaria secondo me va evitata.Tu faresti così per tuo ragionamento (come me del resto) o sei proprio sicuro che sia necessario?

netarrow
05-09-2004, 14:46
Originariamente inviato da unomichisiada
Beh la sincronizzazione comporta un lavoro in più da parte del programma per essere gestita quindi se non è strettamente necessaria secondo me va evitata.Tu faresti così per tuo ragionamento (come me del resto) o sei proprio sicuro che sia necessario?

Per eliminare ogni dubbio ho dato un occhiata al mio manualozzo, il quale dice che la sincronizzazione va usata per evitare che 2 o più thread intervengano su un dato condiviso contemporaneamente, infine riporta proprio il mio esempio di prima, evitare che uno(o più) legga e l'altro(o più) scriva. Nel caso della variabile potrebbe succedere che 1 thread prenda la variabile e contemporaneamente l'altro la incrementi, se vuoi che questo non accada credo sia l'unica soluzione sincronizzare.

:ciauz:

unomichisiada
05-09-2004, 22:42
Mi hai convinto!!! :zizi:
:ciauz:

Loading