2012-04-25 12 views
2

親スレッドがあります。要求をキューに入れ、子スレッドを初期化するのが仕事です。子スレッドは、Webサービスからデータを取得し、親スレッドにコールバックする必要があります。親スレッドはデータを処理し、別の子スレッドを開始します。問題は、コールバックメソッド内のすべてが親スレッドではなく子スレッドによって処理されることです。親スレッドでコールバックを処理する方法はありますか?言い換えれば、子スレッドはコールバックメソッドを処理せずに呼び出した直後に終了します。子スレッドからの親スレッドへのコールバック

答えて

2

あなたはそれのためのいくつかの設計が必要ですが、主なスレッドが何もしないで子が完了するのを待っている場合、私は子スレッドのポイントを見ません。一方、メインスレッドがさらなる着信要求を処理しなければならない場合、それは子スレッドからのコールバックを提供することもできません。あなたはそれを考え直さなければならないでしょう。 1つのアイデアは、あるスレッドが要求を収集してキューにプッシュすることです。子スレッドはイベントを同じキューにプッシュし、キューからのイベント(子スレッドからの要求と応答の両方)を処理する個別のスレッドが存在します。

このようなことがうまくいく場合は、是非ExecutorServiceを使用してジョブのキューイングを処理してください。

+0

私は理解しているかどうかを確認するには: スレッド: メイン - > サービス - - キューが要求し、起動 - > プロセッサ - > ビューア - - のショーのデータ要求を(Webサービスからデータを取得)を扱うユーザーと対話を画面 私は非常に多くのスレッドを持っている必要がありますか簡単に行うことができますか? – user1137146

+0

実際にGUIスレッドを持ち、長い操作(WS呼び出し)を非GUIスレッドにオフロードしたいのですか?それはあなたが探しているものですか? –

+0

はい。私が知りたいのは、あるスレッドでWSからデータを正常に取得すると、データを表示するために新しいスレッドを作成する必要があるか、それを行うために親スレッドに呼び出すことができるということです。私はWSスレッドにデータの表示を処理させたくありません。 – user1137146

0

Markoが言及しているように、ExecutorServiceにはFuture参照があり、親スレッドにジョブを実行した結果を返すことができます。

関連する問題