エントリーの編集

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
記事へのコメント1件
- 注目コメント
- 新着コメント
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
スプリアスウェイクアップ問題 -- Javaのwait() / notify()を信用してはならない -- ぺけみさお
Javaでスレッドを使っている時、wait()したら、Threadがnotify()されるまで処理が止まると思ったら大間... Javaでスレッドを使っている時、wait()したら、Threadがnotify()されるまで処理が止まると思ったら大間違いという話である。 Javaではwait()がnotify()なしで勝手に動いてしまうことがあるそうなのだ。この現象はスプリアスウェイクアップ(Spurious wakeup)と呼ばれている。 このスプリアスウェイクアップを考慮して、Javaでwait()する場合は、再開の条件をアプリケーション側で管理して、条件が満たされなければ再度wait()する実装上の配慮が必要だ。 スプリアスウェイクアップを念頭に置いて、スレッドをwaitするLockクラスを考えてみる。このクラスはlock()でスレッドを停止させ、別スレッドからunlock()で再開させるものだ。 以下は危険な例である。 wait()がスプリアスウェイクアップで実行され、意図せずスレッドが再開される可能性がある
2015/03/21 リンク