Ważną różnicą między stanami zablokowanymi i oczekującymi jest wpływ na harmonogram. Wątek w stanie zablokowanym walczy o blokadę; ten wątek nadal liczy się jako coś, co planista musi obsłużyć, prawdopodobnie biorąc pod uwagę decyzje planisty dotyczące tego, ile czasu ma dać działającym wątkom (aby mógł dać wątkom blokowanie blokady).
Gdy wątek znajduje się w stanie oczekiwania, obciążenie systemu jest zminimalizowane, a planista nie musi się tym martwić. Przechodzi w stan uśpienia, dopóki nie otrzyma powiadomienia. Z wyjątkiem faktu, że utrzymuje zajęty wątek systemu operacyjnego, jest całkowicie poza grą.
To dlatego użycie notifyAll jest mniej niż idealne, powoduje, że kilka wątków, które wcześniej były szczęśliwie uśpione, nie obciążały systemu, aby się obudzić, gdzie większość z nich będzie blokować, dopóki nie zdobędą blokady, znajdą stan, w którym są czekanie nie jest prawdą i wróć do czekania. Lepiej byłoby powiadamiać tylko te wątki, które mają szansę na postęp.
(Użycie ReentrantLock zamiast wewnętrznych blokad pozwala mieć wiele warunków dla jednej blokady, dzięki czemu można upewnić się, że powiadomiony wątek jest tym, który czeka na określony warunek, unikając błędu zgubienia powiadomienia w przypadku powiadomienia o wątku coś, na co nie może działać.)