所以我通过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的数字列表。总的来说很有意义!
当我添加另一个演员时,问题就到了。如果我创建两个演员:
我的控制台输出如下所示:
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次迭代后死亡。