 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Guest
|
Posted: Fri Oct 27, 2006 3:11 pm Post subject: synchronized e static |
|
|
salve a tutti...
ho alcuni thread che eseguono, di tanto in tanto, blocchi synchronized
esegundo il lock su uno specifico Object obj creato appositamente per
gestire wiat e notify.
Ho inoltre una classe di utilità Util con solo metodi static (NON
synchro nota bene) che mi eseguono qualche lavoretto su stringhe e
date....
Domanda:
Se dall'interno dei blocchi synchro (che ripeto lockano su un certo
obj) faccio chiamate ai metodi static su Util, ho problemi di
concorrenza?? Cioè i vari thread che stanno girando devono accodarsi
per accedere alle utilità statiche o possono eseguirle
contemporanemente?
Spero di essermi spiegato...
ciao e grazie |
|
| Back to top |
|
 |
Vincent Vega Guest
|
Posted: Fri Oct 27, 2006 3:25 pm Post subject: Re: synchronized e static |
|
|
batt...@hotmail.com ha scritto:
| Quote: | Se dall'interno dei blocchi synchro (che ripeto lockano su un certo
obj) faccio chiamate ai metodi static su Util, ho problemi di
concorrenza?? Cioè i vari thread che stanno girando devono accodarsi
per accedere alle utilità statiche o possono eseguirle
contemporanemente?
|
Potresti avere problemi di concorrenza. Per esempio, se questi metodi
statici sono richiamati anche da altri oggetti synchronized e non,
perchè comunque non sarebbe rispettato il lock. Finchè questi metodi
sono richiamati dentro lo stesso oggetto e in blocchi synchronized
l'accesso ai metodi è in qualche modo regolato, ma è una
sincronizzazione indiretta.
E poi c'è un'altro problema: qual'è la ragione per cui vuoi
"regolare" l'accesso a questi metodi? Se è, per esempio, perchè hai
delle variabili statiche condivise nella classe Util ricordati che
quelle non te le protegge nessuno. |
|
| Back to top |
|
 |
Guest
|
Posted: Fri Oct 27, 2006 8:06 pm Post subject: Re: synchronized e static |
|
|
Vincent Vega ha scritto:
| Quote: | batt...@hotmail.com ha scritto:
Se dall'interno dei blocchi synchro (che ripeto lockano su un certo
obj) faccio chiamate ai metodi static su Util, ho problemi di
concorrenza?? Cioè i vari thread che stanno girando devono accodarsi
per accedere alle utilità statiche o possono eseguirle
contemporanemente?
Potresti avere problemi di concorrenza. Per esempio, se questi metodi
statici sono richiamati anche da altri oggetti synchronized e non,
perchè comunque non sarebbe rispettato il lock. Finchè questi metodi
sono richiamati dentro lo stesso oggetto e in blocchi synchronized
l'accesso ai metodi è in qualche modo regolato, ma è una
sincronizzazione indiretta.
|
non mi è chiaro questo passaggio... perdonami...
| Quote: | E poi c'è un'altro problema: qual'è la ragione per cui vuoi
"regolare" l'accesso a questi metodi? Se è, per esempio, perchè hai
delle variabili statiche condivise nella classe Util ricordati che
quelle non te le protegge nessuno.
|
Non lo voglio regolare....
vorrei prprio il contrario, cioè:
nonostante ci siano thread che lockano e unlockano delle ben
determinate risorse,
vorrei però dall'interno dei blocchi synchro poter usufruire delle
utilità (metodi statici di Util) senza che tali metodi statici
facciano da collo di bottiglia...
Cerco di ridirlo meglio:
visto che i thread che ho costruito lavoarno contemporaneamente senza
alcun problema e si sincronizzano dove voglio correttamente, non vorrei
però che l'accesso contemporaneo a metodi statici (nonostante NON
siano synchro) faccia accodare i thread...
in definitiva potrei rissumere grossolanamente così:
un metodo statico può "servire" più thread contemporaneamente, o
mentre c'è un thread "sopra" gli altri devono attendere???
Ciao e grazie di nuovo |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|