タグ

programmingとshutdownに関するyukimori_726のブックマーク (1)

  • THI04-J. ブロックしているスレッドやタスクが確実に終了できるようにする

    ネットワークやファイルなどの入出力操作によって処理がブロックされるスレッドやタスクは、サービス運用妨害の脆弱性を防ぐために、明示的な終了の仕組みを呼出し元に提供する必要がある。 違反コード (ブロッキング I/O、volatile フラグ) 以下の違反コード例は、「THI05-J. スレッドの強制終了にThread.stop()メソッドを使用しない」に示しているように、volatile宣言したdoneフラグを使用してスレッドが終了可能であるかどうかを表している。しかし、readLine()メソッドを呼出すと、ネットワーク入出力処理が完了するまでスレッドは待機状態になり、新たに設定されたフラグの値に反応することができない。したがって、スレッドの終了は遅延させられるかもしれない。 // スレッドセーフなクラス public final class SocketReader implements

    THI04-J. ブロックしているスレッドやタスクが確実に終了できるようにする
  • 1