As per the javadoc notify Wakes up a single thread that is waiting on this object\'s monitor. If any threads are waiting on this object, one of them is chosen to be awakened. Th
It does not send it to the first thread, but to any waiting thread (but only one thread).
You should read the javadoc more carefully.
Signal is also possibly a bad name for it, 'notify' is better. The actual implementation of the mechanism is transparent to the Java programmer, and the technical implementation should not be necessary for you to know.... unless you have an interest in Java internals, and then I suggest you inspect the OpenJDK source code.