Akka演员在工作中间神秘地死去

时间:2018-05-08 22:31:15

标签: java akka

所以我通过Java对Akka actor进行图像处理,并且具有一次应用一个像素转换的功能。它以标准方式实现 - 嵌套行和列的循环。图像的信息被加载到2D数组中,每个actor都有一个起始行和一个结束行。

我遇到的问题是,当我启动任何一个以上的演员时,除了第一个演员之外的所有演员都会相对快速地执行。

例如 - 我在actor上运行的代码类似于此:

for (int row = this.startRow; row <= this.endRow; row++) {
        System.out.println("Running for row " + row);
}

很多其他东西显然都出现在for循环中,但有关部分在这里:

如果我旋转一个actor并说它的startRow为0且endRow为1000,则该过程完全按预期运行。在我的终端窗口中,我得到一个从0到1000的数字列表。总的来说很有意义!

当我添加另一个演员时,问题就到了。如果我创建两个演员:

  1. startRow 0,endRow 500
  2. startRow 501,endRow 1000
  3. 我的控制台输出如下所示:

    Running for row 0
    Running for row 501
    Running for row 1
    Running for row 502
    Running for row 2
    Running for row 503
    Running for row 3
    Running for row 504
    Running for row 4
    Running for row 505
    Running for row 5
    Running for row 506
    Running for row 6
    Running for row 7
    Running for row 8
    Running for row 9
    Running for row 10
    Running for row 11
    Running for row 12
    Running for row 13
    Running for row 14
    Running for row 15
    Running for row 16
    Running for row 17
    Running for row 18
    Running for row 19
    Running for row 20
    

    它通常在停止执行之前正好排成6行。我觉得提及没有任何错误也很重要。我还没有实现导出图像的代码,但即使我这样做,也不会阻止我的第二个演员在6-7次迭代后死亡。

0 个答案:

没有答案