小ネタ千夜一夜 第3夜 見せかけ
今日もスレッドの話。
というか、今日もきしださんのネタにのっかる。
http://d.hatena.ne.jp/nowokay/20081202#1228188819
http://d.hatena.ne.jp/nowokay/20081203#1228274321
実はこのサンプルプログラムはちゃんと動くかどうかわからないというもの。あくまでも概念を理解するサンプルという位置づけ。この書き方で納品してはいけない。
というのはスレッドはスプリアスウェイクアップといって本来起きないはずのスレッドが起きてしまう可能性もあるからだ。
https://java.sun.com/javase/ja/6/docs/ja/api/java/lang/Object.html#wait()
https://java.sun.com/javase/ja/6/docs/ja/api/java/util/concurrent/locks/Condition.html
ただし、ドキュメントによってこの「スプリアスウェイクアップ」という言葉が「見せかけの起動」だったりするのはちょっといただけない。「スプリアス」のほうで統一したほうがいいだろう。
というのはスプリアスという単語はコンピュータの世界では割と一般的な言葉だからだ。普段からパソコン触っている人ならば「スプリアス割り込み」という単語を聞いたことがある人は多いだろう。
[追記]
あまりにもなげっぱなしなので補足。
つまり、waitやawait等単体で待ってはいけないということ。これらはいつ関係のないときに起きる可能性があるため、必ずループで使うこと。