スレッドセーフの意味については一般的に理解していますが、Java Webアプリケーションのコンテキストではスレッドについてはあまり知りません。スレッドセーフについて心配する必要があることを知りたくて、 Webアプリケーションでの作業中。
「スレッドの安全性」を気にせずにコードを記述した場合、Webアプリケーションで問題が発生する可能性はありますか?スレッドセーフなコレクションを使用しているかどうかを考慮する必要がありますか?
はい、確かにそうです:)ほとんど(すべて?)のJEE Webコンテナーは、複数のスレッドを同時に使用してクラスを実行します。また、Spring MVCなどのフレームワークは、シングルトンクラスインスタンスを使用してすべてのスレッドにサービスを提供します。ただし、いくつかの簡単なガイドラインに従うと、コードがスレッドセーフになります。
だから、はい、あなたはスレッドを認識する必要がありますが、実際にはそれは大きな問題ではありません。
はい。
すべてのHTTPリクエスト(サーブレット、JSPなどで処理されます)は別のスレッドで処理されるため、ランタイム条件の完全なセットを期待できます。
例として、アイテムのリストを保持してそれを反復処理する場合、同時に別のサーブレットがリストにアイテムを追加または削除すると、ConcurrentModificationException
サーブレットまたはステートレスEJBでインスタンス化されたオブジェクトのみを使用することで、これを最小限に抑えることができます。ただし、これを使用しても、DBトランザクションを正しく設計しないと、データの不整合が発生する可能性があります。