Ho letto che Thread.sleep()
interromperà il thread attualmente in esecuzione per il tempo specificato dopo il quale ritorna allo stato di esecuzione in attesa del suo turno di esecuzione.chiama Thread.sleep() dal contesto sincronizzato in Java
Inoltre, se chiamato dal contesto synchronized
, sleep()
non rilascia il blocco in esso contenuto. Quindi mi stavo chiedendo quando rilascerà il lucchetto. Se il thread, messo in sleep, non ha mai la possibilità di essere eseguito in modo tale da mantenere sempre il lock con se stesso e quindi come gli altri thread possono entrare in metodi/blocchi sincronizzati.
Non sono sicuro di chiedere una domanda valida. Ma per favore aiutami.
In realtà, chiamare 'Thread.sleep()' probabilmente non è affatto una buona idea. Se c'è qualcosa che puoi fare ora, dovresti farlo adesso. Se devi aspettare qualcosa prima che ci sia qualcosa che puoi fare, devi aspettare quel qualcosa piuttosto che dormire. –
@DavidSchwartz: sono d'accordo. Mentre ci sono usi legittimi per 'Thread.sleep()', è spesso usato dove non dovrebbe essere. – NPE
Ben spiegato, ma dicendo "Per riassumere, chiamare Thread.sleep() da un blocco sincronizzato non è probabilmente una buona idea." sta andando troppo lontano A volte vuoi aspettare e mantenere il lucchetto. – Jesus