|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 38
|
[Java] Synchronized vs Lock
Save a tutti.
Qualcuno può confermarmi che utilizzare l'una o l'altra modalità nel contesto seguente è del tutto equivalente? Codice:
public class Contatore{
int valore;
void synchronized incrementa(){valore++;}
void synchronized getValore(){System.out.println(valore);}
}
Codice:
public class Contatore{
int valore;
Lock lock = new ReentrantLock();
void incrementa(){
try{
lock.lock();
valore++;}
finally{
lock.unlock();} }
void getValore(){
try{
lock.lock();
System.out.println(valore);
finally{
lock.unlock();}
}
|
|
|
|
|
|
#2 | |||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Leggendo la documentazione sembrerebbe di sì (cioè che l'uso della classe ReentrantLock e l'uso della keyword synchronized sono equivalenti nel tuo esempio):
Quote:
Una differenza, dal punto di vista prestazionale e non semantico, avrebbe potuto esserci se usavi la versione "fair" della classe, passando il booleano true al costruttore. Cito sempre la documentazione: Quote:
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|||
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 38
|
Ti ringrazio
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:36.



















