2

アクティビティを並行して実行するスレッドはほとんどありません。すべてのスレッドが完了した後でのみ、後続のアクティビティに進む必要があります。これを達成する方法はありますか?

4

5 に答える 5

5

join()Thread クラスのメソッドに注目してください。結合を使用して、あるスレッドが別のスレッドの完了を待機できるようにすることができます。また、他のスレッドが終了するまで待機する時間を指定できるようにオーバーロードされます。結合については、並行性に関する Java チュートリアルの一部として説明されています

于 2012-04-10T12:49:33.287 に答える
3

すべてのスレッドに対して、thread.join() を実行します。

于 2012-04-10T12:49:49.510 に答える
3

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html#join ()

スレッドが完了するまで待機させるために、Thread.join() を使用できます。詳細については、Javadoc を参照してください。

于 2012-04-10T12:49:51.180 に答える
2

概念的には、問題に対処する方法は、実行しているすべてのスレッドによって参照されるオブザーバーオブジェクトを作成することです。スレッドが完了すると、オブザーバーにタスクを実行したことを通知します。オブザーバーは、この種の通知を受信するたびにカウンターをインクリメントします。カウンターがスレッド数に達すると、これはすべてのスレッドが完了したことを意味します。その後、オブザーバーは最終タスクを開始できます。

それは理論のためです。必要に応じて、そのための組み込みJavaクラスがあります:CountDownLatch

于 2012-04-10T12:59:16.860 に答える
2

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/CountDownLatch.htmlを使用することは、実際には Thread.join() よりも優れていると思います。

于 2012-04-10T12:54:21.360 に答える