According to Java documentation for notification () :
Wakes up one thread waiting for this object monitor. If any threads are waiting on this object, one of them is selected wakes up. The choice is arbitrary and is at the discretion of the implementation. . On the object monitor, a thread is waiting, calling one of the wait methods.
, synchronized(obj){}, , obj, . .
(.. , , ), ReentrantLock: , , .