PDA

View Full Version : [Java] synchronized


osa
04-06-2006, 12:28
Salve, se definisco un metodo public synchronized method(), un thread che chiama tale metodo ha il lock sul solo metodo o sulla classe alla quale appartiene lo stesso metodo? Ovvero se il thread t chiama method, gli altri metodi della classe potranno essere eseguiti da altri thread mentre t è in esecuzione in method?

peppedx
04-06-2006, 12:32
Spero di non dire grosse fesserie, ma quando un thread chiama method acquisisce il lock sull'intero oggetto (non sulla classe).

Comuqnue se fai un pò di ricerche potresti averlo spiegato meglio (dovrebbe essere liberamente scaricabile un capitolo dell'Horstman Cornell su java5).

Saluti

osa
04-06-2006, 12:37
Spero di non dire grosse fesserie, ma quando un thread chiama method acquisisce il lock sull'intero oggetto (non sulla classe).

Comuqnue se fai un pò di ricerche potresti averlo spiegato meglio (dovrebbe essere liberamente scaricabile un capitolo dell'Horstman Cornell su java5).

Saluti

Hai ragione volevo dire oggetto, si effettivamente ho cercato un pò e ho visto che il lock è s tutto l'oggetto.

andbin
04-06-2006, 15:15
E aggiungo io che se un thread ha il lock sull'oggetto perché sta eseguendo un suo metodo synchronized, altri thread non possono eseguire alcun metodo synchronized su quell'oggetto ma possono però eseguire gli altri eventuali metodi non synchronized dell'oggetto.