スレッド絡みの質問ですが、synchronized ブロックの中は実行中スレッドは1本
と保証されているのでしょうか?
というのもよくある producer-consumer の例で次のお約束文がありますが、
while(buf.size() <= 0) {
lock.wait();
}
このwaitで複数スレッドが停まっている状態においてlock.notifyAllすると停まっ
ていたスレッドが一斉に走り出してwhileバリアを抜ける場合もあるのでは?と疑
問に思う次第です。
実際にはキチンと動作するので、複数一斉に実行状態になるのではなく、1本に制
約される仕組みが入っているのだと思うのですが、これは言語規約などで保証され
てる動作なのでしょうか?