There is no guarantee that the order in which threads were started determines the order in which they'll run.
There's no guarantee that threads will take turns in any fair way.
It's up to the thread scheduler, as determined by the particular virtual machine implementation. If you want a guarantee that your threads will take turns regardless of the underlying JVM, you can use the sleep() method. This prevents one thread from hogging the running process while another thread starves.
В нашем случае sleep() означает -- устроить небольшой скандал и тогда влезший без очереди проект можно отпинать в сторону, ненадолго. But there is no guarantee as to when the newly awakened thread will actually return to running.