スレッド T1、T2、および T3 があるとします。スレッド T2 が T1 の後に実行され、スレッド T3 が T2 の後に実行されるようにするにはどうすればよいでしょうか?
質問する
1779 次
5 に答える
3
T1が死んだ後、T2を開始する必要があります。
t1.start();
t1.join();
t2.start();
実際、それらを順番に実行する必要がある場合は、それらを別々のスレッドに配置する必要はない/すべきではありません。t1とt2のコードを1つのスレッドに順番に配置するだけです。
于 2012-09-21T19:03:04.130 に答える
3
問題の解決策は、おそらく「複数のスレッドを使用しない」ことです。アクション 2 がアクション 1 の後に実行され、アクション 3 がアクション 2 の後に実行されることをインターリーブなしで保証したい場合の解決策は、アクション 1 を実行し、次にアクション 2 を実行し、次にアクション 3 を実行することです。スレッドはメカニズムとして役立ちます。アクションが特定の順序で実行されるようにすることで、並列処理を明示的に禁止しています。設計された目的とは正反対のことをするメカニズムを使用しようとしないでください。
于 2012-09-21T19:02:02.817 に答える
0
これを設計することができます
- カウントダウンラッチ
- Wait-NotifyAll
- 観察者観察可能なパターン。
于 2012-09-21T19:05:38.067 に答える
0
T1 コードの終わりで T2 を開始します。T2 コードの終わりで T3 を開始します。
または、この演習は本質的に無意味であるため、他のポスターで提案されているように、関数を 1 つのスレッドで順番に実行するだけです。
于 2012-09-21T19:49:02.160 に答える
0
見てみましょうThread#join()
:
このスレッドが終了するのを待ちます。
于 2012-09-21T19:02:19.417 に答える