Ho letto in alcuni punti che non è buona pratica di programmazione acquisire un oggetto Lock
senza che il codice sia racchiuso in un blocco try...finally
in modo che il blocco possa essere rilasciato anche se viene generata un'eccezione.Un thread rilascia un lucchetto quando termina?
Potrebbe sembrare una semplice domanda: tutti i blocchi di un thread vengono rilasciati automaticamente al termine del thread?
Il motivo per cui faccio questa domanda è che il programma su cui sto lavorando è tale che una volta che un thread acquisisce un blocco, non dovrebbe avere alcun motivo lasciarlo andare fino a quando non termina. Inoltre, sono nuovo nell'usare i lucchetti, quindi mi chiedo se non ci siano insidie che forse non ho considerato. Devo preoccuparmi di rilasciare esplicitamente dei blocchi nel mio codice prima che il thread finisca, o posso lasciarlo alla JVM, fiducioso nella certezza che gli altri thread bloccati su tutti i blocchi del thread attivo saranno attivati non appena il il filo si arresta?
Si prega di inviare un po 'di codice. – C1sc0
@ C1sc0: qualche codice su cosa? La domanda ha una dichiarazione del problema abbastanza chiara. – Patrick
Probabilmente è possibile testarlo con un'applicazione molto semplice. Crea due thread, prova ad acquisire lo stesso lock e uccidi il thread subito dopo. Se il secondo thread ottiene il blocco, è effettivamente sbloccato. – Patrick