Sto pensando qui: Se hai 2 thread che eseguono operazioni FAST che devono essere sincronizzate, non è un approccio non bloccante più veloce/migliore di un approccio di blocco/contesto?Blocchi di blocco contro blocchi non bloccanti
Con non-blocking voglio dire qualcosa come:
while (true) { se (checkAndGetTheLock)() break; }
L'unica cosa che riesco a pensare è la fame (con CPU bruciata) se ci sono troppi fili che si aggirano intorno al lucchetto.
Come bilanciare un approccio rispetto all'altro?
Quante operazioni di blocco farete per core della CPU al secondo? – usr
AFAIK, la JVM fa questa ottimizzazione per te se non c'è nessuna contesa sul blocco (che dovrebbe essere il caso se l'operazione è veloce) –
@JB Nizet: Penso che tu debba prendere questa decisione da solo usando sincronizzato contro ReentrantLock. – chrisapotek