1

ネストされたスレッドを実装することをお勧めしますか?? スレッド内でスレッドを呼び出す必要がある状況に遭遇しました。同じスレッド内にすべてのメソッドを実装するなど、他のオプションもありますが、乱雑になりすぎます。プロジェクトは途中で他の人に引き継がれるので、他の人はすべてをまとめるのに苦労するかもしれません.

また、スレッド内で複数のスレッドを呼び出すことをお勧めします (上記と同じ理由で)。

何らかの形でパフォーマンスに影響を与えますか (ソフトウェアはデュアル コア デバイスを対象としているため、論理的にはパフォーマンスが向上するはずです)??

4

2 に答える 2

1

新しいスレッドを作成すると、対処するのが少し面倒になるため、通常、物事を分離するためだけに新しいスレッドを手動で作成しないことをお勧めします。

メイン UI スレッドの外部で処理したいかなり明確な作業チャンクがある場合は、スレッド化を処理する簡単な方法があります。それらを s に入れることを検討してくださいAsyncTask。複数のタスクを同時に実行したい場合は、それらを実行するエグゼキューターのスレッド プール サイズが 1 より大きいことを確認できます。

問題が実際に何であるかについてもう少し詳しく説明しないと、正しいアプローチが何であるかを正確に言うのは困難です。

于 2012-06-09T07:13:03.093 に答える
0

@ kabuko、@ Fuzzical Logicから回答を得て調査を行った結果、AsyncTaskはUIスレッド内で実行する必要があるため、AsyncTask自体を使用してネストされたスレッド化は実際には不可能であることがわかりました。
しかし、私が実装しようとしていたことは、次の方法で実行できます。

  • 最初のUIスレッドで、実行する別の複数のAsyncTaskを呼び出します。

    例:

    protected void onCreate(Bundle savedInstanceState){....。

    DownloadUpdates.execute(fileId); // AsyncTask#1

    UpdateNotification.execute(); // AsyncTask#2

    ......}

注(ここのドキュメントに記載されているとおり):

1つのタスクは1回だけ実行できます(2回目の実行が試行されると、例外がスローされます)

  • ただし、2つのスレッドが相互に依存している場合は、実行時間が予測できず、デッドロックなどが発生する可能性があるため、このようなロジックの使用は避けてください。
  • また、@ Fuzzical Logicで示されているように、通常のスレッド(AsyncTaskを使用しない)を使用してネストされたスレッドを使用することもできます。
于 2012-06-11T06:03:53.567 に答える