0

アクターのメソッドでブロックすることが推奨されていないことはわかっていますが、receive(一度に多くのアクターで実行されない限り) ブロックできると思います。

この投稿preStartでは、問題を解決する 1 つの方法としてブロックすることを提案しているため、おそらくブロックすることpreStartは安全です。

preRestartしかし、私は(notで)ブロックしようとしましたがpreStart、すべてがハングしているように見えました - 受信したメッセージが記録されなくなりました。

また、ブロックするのが安全でない場合、安全な代替手段は何ですか?

4

2 に答える 2

1

アクターをブロックしないでください。

アクターがアクター階層の一部である場合 (そうあるべきです)、アクター システムはそれを停止できません。アクターのライフサイクル (監視、監視など) は、メッセージングによって行われます。ブロックしている子の親アクターを停止しても機能しません。

ブロッキング条件をアクターのライフサイクルと結び付ける方法があるかもしれません。しかし、これは複雑さと悪いスタイルの過負荷につながります.

したがって、最善の方法は、そのアクターの外部でブロッキング部分を行うことです。たとえば、別のスレッドでエグゼキュータ サービスを介してブロッキング コードを実行できます。

于 2013-02-20T20:46:15.433 に答える