Bekleme ve Bildirme
Senkronize metotlar ve bloklar bir iş parçacığına bir kaynağı yalnız kullanma şansı verir. Fakat, senkronize bloğun içinde, bir iş parçacığı başka bir iş parçacığının bir şey yapmasını bekliyor olabilir. Bu durum kaynağın kilidinin başka bir iş parçacığı tarafından istenmesi demektir, bu da hiçbir zaman olmaz ve güncel iş parçacığı takılır. İş parçacığı iş birliği için Object sınıfının üç metodu vardır. wait(), notify(), ve notifyAll().
wait() metodu bir iş parçacığının senkronize blok içinde yürütülürken nesnenin kilidini bırakmasına ve diğer nesneler için beklemesine izin verir. Eğer bir iş parçacığı bir nesnenin wait() metodunu kritik bolum içinde çağırırsa, kilidi bırakır ve diğer iş parçacıklarından birinin notify() veya notifyAll() metotlarından birini çağırmasını bekler.
notify() metodu bir iş parçacığının bekleyen iş parçacıklarından birini uyandırmasını sağlar. Uyandırılacak iş parçacığı, iş parçacığı programlayıcısı tarafından rast gele seçilir. Bu iş parçacığı yürütülme istemeden önce ayrıca nesnenin kilidini de almalıdır. notifyAll() metodu bekleyen bütün iş parçacıklarını uyandırmak için kullanılabilir. Uyanan bütün iş parçacıkları devam etmeden önce nesnenin kilidini almak için yarışmak zorundadırlar. wait() metodu gibi, notify() ve notifyAll() metotları da senkronize bloğun içinden çağrılmalıdırlar.