あなたの質問は非常に幅広いですが、一般的に、ユーザがアプリケーションの使用をやめて(ログアウトしても)バックグラウンドで実行されるスレッドを実行する必要があると理解しています。ユーザーは必要に応じて
まず、これはタイマーサービスを使用してよりクリーンな方法で実行できることを指摘します。定期的なバックグラウンドジョブをスケジュールすることで、必要な作業をすべて実行できます。ユーザーとそのタスクのリストを読み取り、一定の間隔で実行することができます。その後、ユーザーは自分のタスクを要求することができます。タスクをリストから削除します。
このように、バックグラウンドタスクを実行しているユーザーの数は制限されません。彼らはまた、1つのスレッドで順番に実行することができますが、私の答えの残りの部分を見て、それを微調整するかもしれません。
Java EEチュートリアル:https://docs.oracle.com/javaee/7/tutorial/ejb-basicexamples004.htmでタイマをshcedulingする方法について詳しくは、
ユーザーごとに個別のスレッドが本当に必要な場合は、要求処理スレッドとは別にスレッドを実行する方法がいくつかあります。 @Asynchronous
注釈を使用して、非同期EJBメソッド呼び出しを使用することができます。 ManagedExecutorService
を注入して、submit
メソッドを使用して非同期でRunnable
を実行することもできます。両方の方法で、あなたは文脈を緩めず、依存性注入は引き続き機能します。
約Concurrency utilities
、あなたはまた、タイマーから非同期ランナブルを実行するかもしれないが、あなたはタイマハンドラ内からのみの単一のタスクを実行する場合は、次のことを必要としないことがありのJava EEチュートリアルでは、非同期eecutionの詳細を参照してください。以前のハンドラがまだ完了していない場合、新しいスレッドでタイマがトリガされたときにタイマハンドラが実行されるためです。
ようこそStackOverflow ...あなたの質問はこれまでのところ広いです...このhttp://stackoverflow.com/tourを見て、後で戻ってくる –
ヒントのおかげで、私はあなたの返信に感謝します。 –