Ho due metodi sincronizzati in una classe, diciamo method1() e method2(). Un thread dice "Thread 1" mantiene il lock su quell'oggetto della classe eseguendo il metodo sincronizzato 1(). Può un altro thread dire "Thread 2", accedere al lock tramite method2() nello stesso momento mentre "Thread 1" tiene la serratura.due diversi metodi sincronizzati dello stesso oggetto?
Questo caso è analogo alla classe java.util.Vector che ha metodi sincronizzati add() e remove(). Spiega anche questo caso.
Grazie Borealid .. Ma se questo è il caso, perché Java fornisce la sincronizzazione specifica per i metodi, si può solo forniti per la l'intera classe? – JavaUser
@JavaUser: 'synchronized (this)' non significa che l'intera classe è 'sincronizzata'. Significa che acquisisci il blocco Oggetto dell'istanza su cui è stato chiamato il metodo. Non vuoi necessariamente * tutti * i metodi per essere 'sincronizzati '(infatti, lo farai raramente). Per ottenere le prestazioni del codice multithreading è necessario utilizzare il minor numero di blocchi possibile preservando la correttezza del programma - ogni volta che si ha un blocco conteso, alcuni thread attenderanno, senza fare nulla. – Borealid
@ Borealid ... nel momento in cui ho definito sincronizzato in qualsiasi metodo, l'intero oggetto è bloccato quando chiamo quel metodo ..am I right? – JavaUser