2

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

4

2 に答える 2

2

そのためには何らかの設計が必要ですが、まず、メインスレッドが何もせずに子スレッドが完了するのを待つ場合、子スレッドのポイントがわかりません。一方、メイン スレッドがさらに着信要求を処理する必要がある場合は、子スレッドからのコールバックも処理できません。あなたはそれを再考する必要があります。1 つのアイデアは、1 つのスレッドが要求を収集し、それらをキューにプッシュすることです。子スレッドはイベントを同じキューにプッシュし、キューからのイベント (子スレッドからの要求と応答の両方) を処理する別のスレッドがあります。

そのようなことがあなたにとって良いと思われる場合は、必ず を使用しExecutorServiceてジョブのキューイングを処理してください。

于 2012-04-25T12:04:36.940 に答える
0

Marko が述べたように、Future 参照を持つ ExecutorService を使用すると、実行中のジョブの結果をその親スレッドに返すことができます。

于 2012-04-25T12:19:55.173 に答える