0

私は2つのスレッドを持っています。1つは顧客で、もう1つは生産者です。

READという顧客の関数を呼び出したい。これは、プロデューサーがデータを配置するまで無期限にブロックする必要があります。

どうすればいいですか?ありがとう !

4

3 に答える 3

5

を使用することをお勧めしますLinkedBlockingQueue。これは、「プロデューサー-消費」問題をシミュレートする最も簡単な方法です。一方のスレッドはメソッドを使用して値をキューに入れput、もう一方のスレッドはブロッキングを使用してデータを消費しますtake(スレッドはキューが空でなくなるまで待機します)。LinkedBlockingQueueメソッドを同期する必要がないため、使用は非常に簡単です。すべてがすでに完了しています。

于 2012-06-25T23:44:22.230 に答える
2

キューに入れるデータに同期が必要な場合、つまりプロデューサが 1 つのオブジェクトを生成し、それをキューに格納します。コンシューマは、プロデューサによって配置されたオブジェクトを消費する必要があります。SynchronousQueue または new TransferQueue を使用することをお勧めします。

于 2012-06-26T08:36:19.750 に答える
-3

を使用thread.wait()してからthread.notify()thread.wait()起こるまで待ちますthread.notify()

于 2012-06-25T23:46:40.130 に答える