-6

同期Javaスレッドの処理、待機と通知の適用に問題があります..

答えを交互に出力できるプログラムにこれらを実装する方法を知りたい..たとえば、person1 は person2 と同様に 1 ~ 5 の数字を数えます。出力は次のようになります。

person1 count 1
person2 count 1
person1 count 2
person2 count 2
person1 count 3
person2 count 3
person1 count 4
person2 count 4
person1 count 5
person2 count 5

みんなありがとう。

4

3 に答える 3

1

これは、次の 2 つの方法で簡単に行うことができます。

  1. 2 つのセマフォを使用してスレッド間で「印刷トークン」を渡します。スレッド 1 は印刷し、セマフォ A にシグナルを送信し、セマフォ B を待機してからループします。スレッド 2 はセマフォ A で待機し、印刷し、セマフォ B にシグナルを送ってループします。

  2. インラインのシングルスレッド コードを記述します。

于 2012-10-05T14:14:32.707 に答える
0

スレッド化されたプログラムの全体的な目的は、スレッドの非同期操作です。これにより、さまざまなタスクが相互に同期しなくても、さまざまなCPU /コアで同時に動作できるため、パフォーマンスが向上します。この種の同期を強制するために、ロックステップ出力は、定義上、スレッドに非定型の処理を強制します。

@Martinの回答は、それを機能させるための代替手段を提供します。

于 2012-10-05T14:51:48.537 に答える
0

待機と通知を使用しないでください。同期ブロックを使用します。

コード例を含む、Java Monitor の仕組みの詳細な説明については、http ://www.artima.com/insidejvm/ed2/threadsynch.html を参照してください。

于 2012-10-05T13:54:31.623 に答える