Perbedaan penting antara status diblokir dan menunggu adalah dampaknya pada penjadwal. Sebuah utas dalam keadaan diblokir bersaing untuk mendapatkan kunci; utas itu masih dihitung sebagai sesuatu yang perlu diservis oleh penjadwal, mungkin diperhitungkan dalam keputusan penjadwal tentang berapa banyak waktu untuk memberikan utas yang berjalan (sehingga dapat memberi kesempatan utas memblokir pada kunci).
Setelah utas berada dalam status tunggu, tekanan yang diberikan pada sistem diminimalkan, dan penjadwal tidak perlu mengkhawatirkannya. Ini tidak aktif sampai menerima pemberitahuan. Kecuali fakta bahwa itu membuat utas OS terisi, itu sepenuhnya keluar dari permainan.
Inilah sebabnya mengapa menggunakan notifyAll kurang dari ideal, itu menyebabkan sekelompok utas yang sebelumnya dengan senang hati tidak aktif sehingga tidak membebani sistem menjadi terbangun, di mana kebanyakan dari mereka akan memblokir sampai mereka dapat memperoleh kunci, menemukan kondisinya. menunggu tidak benar, dan kembali menunggu. Akan lebih baik jika memberi tahu hanya utas yang memiliki peluang untuk membuat kemajuan.
(Menggunakan ReentrantLock alih-alih kunci intrinsik memungkinkan Anda memiliki beberapa ketentuan untuk satu kunci, sehingga Anda dapat memastikan utas yang diberi tahu adalah utas yang menunggu pada kondisi tertentu, menghindari bug pemberitahuan hilang jika utas mendapat pemberitahuan untuk sesuatu yang tidak bisa ditindaklanjuti.)