JavaのWebアプリケーションでスレッドを使用することについて同僚と大きな議論に遭遇しました。
彼らのポイントは、Java Webアプリケーションはコンテナによって管理されていないため、スレッドを使用することは推奨されないということです。スレッドがコンテナに干渉する可能性があるため、通常はこれで問題ありません。しかし、たとえば、Java EEアプリケーションではなく、単純なサーブレットアプリである場合、その代わりに何を使用する必要がありますか?
JavaのWebアプリケーションでスレッドを使用することについて同僚と大きな議論に遭遇しました。
彼らのポイントは、Java Webアプリケーションはコンテナによって管理されていないため、スレッドを使用することは推奨されないということです。スレッドがコンテナに干渉する可能性があるため、通常はこれで問題ありません。しかし、たとえば、Java EEアプリケーションではなく、単純なサーブレットアプリである場合、その代わりに何を使用する必要がありますか?
Webアプリケーションでスレッドを使用すること自体は問題ではありません。それはあなたがそれらを使う理由と方法に依存します。特に、1000人のユーザーがいて、これらのユーザーごとに1つのスレッドを開始する場合は、JVMをひざまずかせます。
ただし、特定の削減されたユーザーとユースケースのセットに対してスレッドが非常にまれに起動され、スレッドプールを使用してそのようなスレッドの数を制限する場合は、問題はありません。自分が何をしているのかを理解することが重要です。
また、HttpServletRequestまたはHttpServletResponseオブジェクトは、複数の同時スレッドで使用されることを意図しておらず、要求が処理されると使用されなくなるため、このようなスレッドに渡さないようにしてください。