2016-08-15 27 views
0

ただし、ABの2つのスレッドがあります。 Aスイッチがスリープ状態にした場合Javaでスレッドの状態を監視する方法は?

  1. 、その後、Bスイッチはあまりにもスリープ状態に:私が欲しいです。

  2. Aが起きている場合は、Bも起きています。

それを実装する方法はありますか?

+5

'A'はどのようにスリープするのですか? 「A」が正常に収穫されたり、マルチタスキングの過程で先取りされた場合は、そのことを知ることはできません。マルチコアマシンでは、決して得られないかもしれません。 –

+2

スレッドステートは次のとおりです。どのステートで、どのようにステートに到達したのかを明確にする必要がありますか? NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED – ravthiru

+1

これらのスレッドは、眠っていないときや、互いに観察しているときに何をしていますか? – EJP

答えて

0

これらのスレッドを同期させる必要がある場合は、CyclicBarierを使用できます。

スレッドが待ち受けているバイヤーです。それはスレッドがそれを待っているように動作し、待機中のスレッドの数が指定された数に達すると、すべてのスレッドを起動し、それらは引き続き動作します。したがって、スレッドの束を1つのステップで同期させ、次のステップを実行する前にお互いがこのステップを完了するまで待機する方法です。

0

直接ではありません。 SleepとWakeは、ユーザーコードに応答する機会があるスレッド上のライフサイクルイベントではありません。 Thread.sleep()またはThread.wake()を別のスレッドに呼び出す方法はありません。非推奨の非推奨スレッド操作は現在のスレッドでのみ機能するためです。

スレッドによって実行される作業の間の関係を、より明示的に(たとえば、キュ​​ーを使用して)表します。スレッドAはキューから作業を消費し、スレッドBによって消費されたキューに結果を格納します。作業があるときは両方のスレッドが動作していて、作業がないときは両方のスレッドがスリープしています。

関連する問題