2012-03-30 6 views
-2

誰かが私に解決策を考える手助けをすることができれば興味深い質問があります。 私はAとBは、キューがプロセスのどこにいるのかを検出しますか?

  1. Aが充填されている作業を待っているとして、それらを考えると
  2. Aが行われている何かをするとBに
  3. Bを通過し、何かして仕上げを行い、2つの別々のプロセスを生成します

Javaを使用しているプロセスのどこを検出できますか?私たちが今どこにいても、このプロセスをどうやって止めるのでしょうか?

ありがとうございます!

+0

あなたは仕事「プロセス」を使用します。あなたはスレッドを意味しますか? – Gray

+0

「プロセスを停止する」と言うと、System.exit(0)以上のことについて話していますか? – Gray

答えて

0

currentStage変数を追加して、コード内の別の場所にステージを更新できます。また、あなたの "レジスタ"を保存します。これはあなたが気にするローカル変数を保存することを意味します。オブジェクトをシリアライズし、おそらくデータベースに配置します。

次に、終了して再起動すると、最後に保存されたステージに移動し、対応するオブジェクトをデータベースから復元します。

1

純粋なJavaでは、両方のスレッドからアクセスできるメモリ変数があり、通信できるようになります。それらを同期させたり、セマフォを使用して、一度に1つのスレッドだけが変数の情報を変更していることを確認する必要があります。

他の言語には、メッセージを渡すことによってより堅牢なスレッド間通信を実装するアクターの概念があります。 Scalaを見てください。Javaの上に構築されています。 ScalaとJavaのバージョンを持つakkaライブラリ。

このようなことについて考えるのが好きな人は7週間で7つの言語を使用してくださいによってPragmatic Programmers。

+0

+1の書籍の参考になります –

0

この手順に従うには、A &Bによって出力され、続行する必要がある場合はA & Bによって尋ねられるステータス情報を読み取ることができる別のスレッド(C)が必要です。このインタフェースを実装することができる

  1. 空隙UpdateStatusを(文字列)
  2. ブールshouldStop()

C及びAを呼び出すときに自身を渡す:

は、例えば、2つの方法でProcessFollowerインタフェースを作成しますAはProcessFollower(C)への参照をBに渡しました。状態AとBが変化するたびに、updateStatusが呼び出され、各回(例えば、各ループ反復)にshouldStop();偽の場合、彼らは単に戻るか、そういうものです。

関連する問題