Difference between Hoare Monitor vs Java Monitor

1

I'm trying to understand something that I still can not get right because of that.

In my dsd book, it presents 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 not understand why the Java monitors use While (! B) and in the Hoare monitors use if (! B)

    
asked by anonymous 04.12.2018 / 15:52

0 answers