1

特定の関数を別のスレッドで実行する Android アプリを開発しています。さて、このスレッドが実行されているときに、別のスレッドを作成したくありません。したがって、基本的には、スレッドが実行されているかどうかをメインスレッドに確認させ、実行している場合はスレッドをバイパスさせたいと考えています。そうでない場合は、スレッドを作成してその関数を実行します。どうすればいいですか?

4

3 に答える 3

2

そのような場合は、 a を使用することをお勧めしますFuture。コードをFutureTask. を使用すると、が完了したかFuture.isDoneどうかがわかります。Futureはいの場合は、値も返します。

良い点は、同じスレッドを使用して複数のコード ブロックを Future として実行できることです。

現在あなたがしている場合:

Runnable myRunnable;
Thread t = new Thread(myRunnable);

次に、次のことを行う必要があります。

Future<Void> future = new FutureTask<Void>(myRunnable);
ExecutorService ex= Executors.newFixedThreadPool(1);
ex.submit(future);

future.isDoneあなたの希望を与えます。使い続けられるex

于 2013-07-25T08:19:57.373 に答える