Sprawdzanie warunku zatrzymania wątku w pętli

0

Witam

Rozgryzając zagadnienia dotyczące programowania współbieżnego napotkałem się na stwierdzenie że:

warunek zakończenia oczekiwania należy sprawdzać w pętli. Nie ma bowiem gwarancji, że po odblokowaniu wątku czekającego warunek nadal będzie spełniony.

Nie rozumiem w jakim momencie może zdarzyć się aby po odblokowaniu warunek był nie spełniony , regułą jest że zmienia się flagę(warunek) a zaraz potem odblokowuje się wątek,o chyba że został zmieniony warunek(flaga) od innego wątku który czekał na tym samym monitorze a ten wciąż ma czekać.
I tu rodzi się drugie pytanie, notifyAll odblokowuje wszystkie wątki czekające na jednym monitorze , ale przecież wszystkie instrukcje są w bloku synchronizowanym na tym samym obiekcie-monitorze więc nie powinny te kody wykonywać się razem. Chyba że działa to na zasadzie że kiedy już jesteśmy w środku takiego bloku to nikt nam już nic nie zablokuje i powstaje wyjątek w którym po notifyAll wykonują się kody równocześnie synchronizowane na tym samym obiekcie.

Wyprostujecie moją wiedzę?

Pozdrawiam serdecznie i dziękuje za odpowiedzi.

0

Pozwolę sobie podbić ,bo ten temat bardzo mnie interesuje a na forum na pewno jest ktoś kto zna odpowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1