【问题标题】:Emergency stopping of Akka ActorAkka Actor 紧急停止
【发布时间】:2015-09-17 11:34:39
【问题描述】:

我正在使用 Akka 框架来控制硬件,在极少数情况下,我需要在计算过程中冻结一个 actor。这可以防止损坏硬件。有没有办法快速冻结或杀死和Actor,即使它仍在运行任务?

【问题讨论】:

    标签: java scala parallel-processing akka


    【解决方案1】:

    遗憾的是,这不是 JVM 支持的。当线程正在运行时,例如执行一些长时间运行的操作,它不能被任意中断(是的,有一个interrupt() 调用但是它只是设置了一个标志,线程的用户级代码可能会查看这个标志,这不是强制中断)。由于 Akka Actors 使用 Java 线程,因此同样的限制也适用于它们。

    但是,Actor 的作用在于,您可以将工作分成非常小的工作块,思考“步骤”,并将它们表示为消息。如果您检测到您不应该继续进行,您可以简单地存储消息(或者只是对它们不执行操作,而不是执行某些操作)。

    这取决于您所说的“冻结”是什么意思。这本身是不可能的,但也许可以实现非常相似的效果?

    // 杀戮部分可以通过 Actor 内部的context stop self 或发送PoisonPill 来完成,但是这是异步的,并且通过 Actors 邮箱 - 就像 Actor 通信中的所有内容一样。

    【讨论】:

    • 我正在听取您的建议,并将流程分解为更小的 Akka 步骤。在这之间可以停止进程。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-10-13
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多