>>574
sleep()は、一秒間Threadをwaitして、そのあとrunnable状態になるだけ。
あるThreadがrunnable状態になっても、今まさにCPUを占有して動いている
Threadが何らかの理由でCPUリソースを解放するまでは、動かない。

JVM仕様は、それが何時になるのかは保証していない。あるThreadが物凄く
忙しいなら、永遠に実行件を与えない、というJVM実装も有りうる。

…実際には、今のJVMはnativeスレッドで実装されているので、時分割で
ThreadにCPU実行権を「大体公平に」与えているはずだけど。

sleepから起きた後なるべく速く動き出して欲しいなら、忙しいThreadのほうに
時々Thread#yield()コールをかませとこう。これは、もしrunnableな状態の
Threadが自分以外にあったら、ソイツにCPU実行権を渡しなさい、と言う命令。