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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top