2016-04-12 9 views
0

マルチスレッドのJava EE Glassfishコンテナを作成することはできますか?multithreaded Java eeを作成する

私の意図は、ユーザーがソーシャルネットワークを立ち上げることができるアプリケーションを作成し、各ユーザーがソーシャルネットワークから情報を取得したいパラメータで新しいスレッドを起動することです。 これらのスレッドはすべてメモリサーバを避けるために数が制限されます。

私はjava eeで複数のスレッドを作成することができますが、ユーザーはアプリケーションを終了してユーザーが終了するまでバックグラウンドで実行し続けることができますか?

グラスフィッシュの仕事には1つの解決策がありますか?

+0

ようこそStackOverflow ...あなたの質問はこれまでのところ広いです...このhttp://stackoverflow.com/tourを見て、後で戻ってくる –

+0

ヒントのおかげで、私はあなたの返信に感謝します。 –

答えて

0

あなたの質問は非常に幅広いですが、一般的に、ユーザがアプリケーションの使用をやめて(ログアウトしても)バックグラウンドで実行されるスレッドを実行する必要があると理解しています。ユーザーは必要に応じて

まず、これはタイマーサービスを使用してよりクリーンな方法で実行できることを指摘します。定期的なバックグラウンドジョブをスケジュールすることで、必要な作業をすべて実行できます。ユーザーとそのタスクのリストを読み取り、一定の間隔で実行することができます。その後、ユーザーは自分のタスクを要求することができます。タスクをリストから削除します。

このように、バックグラウンドタスクを実行しているユーザーの数は制限されません。彼らはまた、1つのスレッドで順番に実行することができますが、私の答えの残りの部分を見て、それを微調整するかもしれません。

Java EEチュートリアル:https://docs.oracle.com/javaee/7/tutorial/ejb-basicexamples004.htmでタイマをshcedulingする方法について詳しくは、

ユーザーごとに個別のスレッドが本当に必要な場合は、要求処理スレッドとは別にスレッドを実行する方法がいくつかあります。 @Asynchronous注釈を使用して、非同期EJBメソッド呼び出しを使用することができます。 ManagedExecutorServiceを注入して、submitメソッドを使用して非同期でRunnableを実行することもできます。両方の方法で、あなたは文脈を緩めず、依存性注入は引き続き機能します。

Concurrency utilities

、あなたはまた、タイマーから非同期ランナブルを実行するかもしれないが、あなたはタイマハンドラ内からのみの単一のタスクを実行する場合は、次のことを必要としないことがありのJava EEチュートリアルでは、非同期eecutionの詳細を参照してください。以前のハンドラがまだ完了していない場合、新しいスレッドでタイマがトリガされたときにタイマハンドラが実行されるためです。

+0

スケジューリングを使用することで、それは私の頭部を通過した最初の選択肢の1つですが、私は問題があります。それぞれの "スレッド"は、外部サービスと永続的なconeion httpを確立する必要があります。定期的かつ反復的なものではなく、永久的なものです。 私は、同時実行ユーティリティを使用して解決策を見つけると思います。 URLをありがとうございます。 同時実行ユーティリティを使用する例があまりにも多くありません。 –

関連する問題