2016-06-21 7 views
0

私はいくつかの種類のメッセージを処理するためにJavaでGParsを使用しようとしています。 メッセージタイプごとに1つのアクターがあります。GPars - 俳優がビジー状態であるかどうかを知る方法を教えてください。

ただし、メッセージの処理には多くの時間がかかりますが、メッセージは引き続き送信されます。私は俳優が忙しい間に今後のメッセージを無視する必要があります。

GParsアクタがビジー状態になっているかどうかを確認するにはどうすればよいですか?私はActor.isActive()メソッドについて知っていますが、それは事実です(JavaDocはかなりあいまいで不明です)、有用な情報エーテルを見つけることができませんでした。

答えて

0

これを判断する組み込みの方法はありません。恐れがあります。おそらくCountdownLatchesに基づいて、自分自身で制御するアルゴリズムを自分で実装する必要があります。

0

一般的に、これは問題になる可能性があります。俳優は一度に1つのメッセージしか処理できないため、解決策が何であれ制限があります。たとえば、俳優、監督者、ワーカーの中に俳優を置くことができます。

実際に作業を行うのは、作業者です。スーパーバイザに作業が送信されるとどうなりますか。スーパバイザにはisBusyなどのブール変数がありますが、最初はfalseです。作業が受け取られると、監督者は変数をtrueに設定し、作業を作業者に渡します。作業が終了すると、作業者は結果をスーパーバイザに返し、スーパーバイザはisBusyをfalseに設定して結果を返します。

isBusyがfalseの間に別のメッセージが表示された場合、監督者はisBusyメッセージなどのメッセージを返信するだけで、何も言わないようにすることができます。

ワーカーがクラッシュまたは再起動すると、isBusyは引き続きtrueになります。あなたのニーズを満たす場合は、このソリューションについて考える必要があります。私が知らないこれの方が良いかもしれないメールボックスがあります。

あなたが何をしていても、あなたの俳優システムを悪い状態、つまり最高の状態にすることができる状況を避けるために最善を尽くすべきです。

関連する問題