Cosa succede a un filo che non riesce ad acquisire un semaforo?
-
10-10-2019 - |
Domanda
Cosa accade quando un thread non può acquisire un semaforo (per mancanza di permesso). Sarà essere spostato in stato di attesa?
EDIT:. Sarà l'inizio filo riprendere la precedente sequenza di esecuzione, quando il semaforo diventa disponibile
Soluzione
Cosa accade quando un thread non può acquisire un semaforo (per mancanza di permesso). Sarà essere spostato in stato di attesa?
Sì. Se stai parlando java.util.concurrent.Semaphore
(e metodo aquire
questo è ciò che accade:
acquisisce un permesso da questo semaforo, bloccante finché uno è disponibile, oppure il filo viene interrotto.
[...]
Se nessun permesso è disponibile, il thread corrente viene disabilitato per scopi programmazione dei thread e si trova in sospeso fino a quando una delle due cose accade:
Qualche altro thread invoca il metodo release () per questo semaforo e il thread corrente è prossimo ad essere assegnato un permesso; o
Qualche altro thread interrompe il thread corrente.
tryAquire
sarà tuttavia, come suggerisce il nome, solo tenterà di acquisire la serratura, e invece di bloccare falso di ritorno, se non abbia un permesso.
L'inizio filo riprendere la precedente sequenza di esecuzione, quando il semaforo diventa disponibile.
Sì. Se un altro thread chiama release
questa discussione può restituire da acquire
e continuarlo di esecuzione.