GPars - 我怎么知道演员是否很忙?

时间:2016-06-21 13:06:57

标签: java multithreading actor gpars

我试图在Java中使用GPars来处理几种类型的消息。 每种消息类型都有一个actor。

但是消息处理需要花费很多时间,而消息会不断发生。

,当演员忙时,我需要忽略即将发出的消息(只是扔掉它们)

我怎么知道GPars演员是否忙?我知道Actor.isActive()方法,但我不太确定它是什么(JavaDoc非常含糊不清),我找不到任何有用的信息。

2 个答案:

答案 0 :(得分:0)

我担心没有内置的方法来确定这一点。您必须自己实现一个忙碌控制算法,可能基于CountdownLatches。

答案 1 :(得分:0)

一般来说,这可能会有问题,因为演员只能一次处理一条消息,无论你必须做什么解决方案,都会有局限性。例如,你可以在一个演员,一个主管和一个工人中有一个演员。

工人演员是实际完成工作的人。结果是工作被发送给主管。主管有一个布尔变量,如isBusy,最初是假的。收到工作后,主管将变量设置为true,并将工作传递给工作人员。工作完成后,工作人员将结果发送回主管,主管将isBusy设置为false并返回结果。

如果在isBusy为false时收到另一条消息,主管可以发回消息,例如isBusy消息,或者不执行任何您想要的消息。

请注意,如果工作程序崩溃或重新启动,则isBusy仍然为true。如果它能满足您的需求,您将需要考虑这个解决方案。可能有一个邮箱哪个更好,我不知道。

无论你做什么,你应该尽力避免造成你可以让你的演员系统处于糟糕状态的情况,祝你好运。