Qualcun altro ha menzionato la disponibilità di serrature da fiera. Se ti interessa davvero chi va per primo, allora potresti avere un problema in tempo reale. In tal caso, è possibile utilizzare RTSJ, in cui è specificato l'ordine e l'altra semantica dell'acquisizione del blocco. Le specifiche sono disponibili nello RTSJ Spec in Sincronizzazione. Citando dalla sezione logica:
norme del codice Java per sincronizzato forniscono un mezzo per mutua esclusione ma non impediscono prioritari illimitata inversioni e quindi sono insufficienti per applicazioni in tempo reale. Questa specifica rafforza i semantica per codice sincronizzato di di mandato controllo inversione di priorità, in particolare fornendo classi per l'ereditarietà priorità e la priorità emulazione soffitto. L'ereditarietà di priorità è più ampiamente implementata in sistemi operativi in tempo reale e è quindi richiesto ed è il meccanismo di default predefinito in questa specifica .
Se i "lucchetti chiari" sono ciò che si sta cercando, esaminare il pacchetto java.util.concurrent. Ad esempio, ReEntrantLocks è giusto. L'equità deriva dal fatto che la priorità è data ai thread di attesa più lunghi, analoghi al concetto di "Aging" nella pianificazione dei processi. – questzen