1
I’m trying to figure out something I haven’t quite figured out yet why.
In my book of SD, you present the following statement:
Nos monitores de Hoare, se uma thread (dentro do monitor) executa x.notify(), o monitor é cedido para uma das threads acordadas. Isto permite que a thread execute
if(!B) x.wait();
para aguardar pelo estabelecimento da condição B (quando a thread retomar a execução é certo que B permanece verdadeiro).
• Nos monitores Java, a thread que executa x.notify() permanece dentro do monitor; a thread acordada só prossegue quando a primeira dexar o monitor. Isto exige que o teste da condição B seja feito da seguinte forma:
while(!B) x.wait();
pois B pode ter mudado quando a thread acordada retomar a execução
Even with this explanation, I still can’t understand why Java monitors use While(! B) and Hoare monitors use if(! B)