Salikh, here is my answer to your question from 1789:
> By the way, why we have a waiting loop in Thread.start() at all? Spec does not mandate it. – I think I would file a separate JIRA to remove this loop.
The spec for Thread.start() method says that:
"!!!Unable to render embedded object: File (The result is that two threads are running concurrently) not found.!!!!:
the current thread (which returns from the call to the start method) and the other thread (which executes its run method)."
It seems to me that this means that after return from the start method both threads should be alive and running, thus synchronization required to wait until child thread run method was called. The right method to implement this in java(synchronization on native side is also possible) is to put lock.wait() method into while loop on isAlive condition, to avoid spurious wake-ups and provide expected behavior in any case.
Also, interrupting waiting on start methos thread may cause InterruptedException which is not expected from the start method, but just ignoring it is also incorrect, because it may turn into lost interruption. Thus forwarding interrupted status seems to be easiest and correct solution for java style start method synchronization.