Java EE 開発について私が最初に学んだことの 1 つは、Java EE コンテナー内で独自のスレッドを生成してはいけないということです。しかし、よく考えてみると、その理由がわかりません。
なぜそれが推奨されないのかを明確に説明できますか?
ほとんどのエンタープライズ アプリケーションでは、メール デーモン、アイドル セッション、クリーンアップ ジョブなどの何らかの非同期ジョブが必要であることは間違いありません。
では、実際にスレッドを生成すべきではない場合、必要なときにスレッドを生成する正しい方法は何でしょうか?
ベストアンサー1
環境内のすべてのリソースはサーバーによって管理され、場合によっては監視されることが想定されているため、これは推奨されません。また、スレッドが使用されているコンテキストの多くは、通常、実行スレッド自体に関連付けられています。独自のスレッドを開始するだけでは (一部のサーバーでは許可されないと思います)、他のリソースにアクセスできません。つまり、InitialContext を取得して JNDI 検索を実行し、JMS 接続ファクトリやデータソースなどの他のシステム リソースにアクセスすることはできません。
これを「正しく」行う方法はいくつかありますが、それは使用されているプラットフォームに依存します。
commonj WorkManagerはWebSphereやWebLogicだけでなく他のアプリケーションでも共通です。
重複している部分もあるこれです今朝から
更新: この質問と回答は 2009 年の Java EE の状態に関するものであり、それ以降状況は改善されていることに注意してください。