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.