2

Android アプリの jni ライブラリの C++ ファイルから 2 つのメソッドを呼び出す 2 つのステートメントがあります。例えば ​​-

x1 = function1();
x2 = function2();

これらの各メソッドは、値を返すのに約 8 秒かかります (一部のデータ処理のため)。私の目的は、これらを次々に実行するのではなく、同時に実行することです (これにより、16 秒の遅延が発生します)。

2 つの Runnable を作成しようとしましたが、それらが同じキューに追加されることに気付きました。

これらの関数呼び出しをループさせたくないため、 Thread クラスを拡張したくありません (必要なときにのみ呼び出す必要があります)。

両方を一度だけ同時に呼び出して、ほぼ同時に値を返すことができるソリューションはありますか?

4

2 に答える 2

1

Android の AsyncTask クラスを調べる必要があります。バックグラウンドで実行されているスレッドを開始する方法を提供し、作業が完了したときにコールバックを提供します。この場合、両方のスレッドがバックグラウンドで実行されるため、メイン スレッドに待機するように指示しない限り、残りのコードは作業が完了するまで実行し続けることに注意する必要があります。

于 2013-10-08T20:46:48.910 に答える
0

スレッドプールでそれを行うことができます。拡張する必要はありませんThread:

ExecutorService pool = Executors.newFixedThreadPool(2);
Future future1 = pool.submit(new Callable() { public Object call() { return function1(); } } );
Future future2 = pool.submit(new Callable() { public Object call() { return function2(); } } );
x1 = future1.get();
x2 = future2.get();
于 2013-10-18T13:50:49.850 に答える