【发布时间】:2016-01-22 08:51:50
【问题描述】:
这是一个简单的问题。您是否可以像使用常规 Java 应用程序一样在 play 框架上的单独线程中有意地运行进程。我似乎找不到这个问题的答案。
我目前有一个 Java 桌面应用程序,它使用 C 语言编写的 CPU 密集型机器学习实用程序来查找图像中的特征。使用桌面上的常规 Java,我可以一次运行该实用程序的多个实例,每个实例都在自己的线程中,从而使图像处理速度更快。在具有 128 个逻辑核心的服务器上,我只需几秒钟而不是几分钟。我想重新设计我的桌面系统以允许它访问大型服务器的资源。现在我正试图找出最好的方法来做到这一点,而 Play 是我正在研究的一个选项——本质上是将系统放在网页上。
【问题讨论】:
-
你不能在线程中运行进程。您可以从线程中调用它们。它更像是通过 Java 运行时或 ProcessBuilder 调用命令。如果您只是考虑将计算分解为多个线程或使用分布式系统来处理它
-
我将图像分割成小块,并在每个小块上运行 C 实用程序。因此,例如,我可以将图像拆分为 8x8,并运行 64 个 C 程序实例,每个图块上一个。
-
很好,然后将动作生成到线程中会很简单。您基本上通过构造函数创建一个新的动作对象,然后简单地执行运行。这带来了系统和内存限制。我建议你阅读这个不错的帖子programmers.stackexchange.com/questions/97615/…
-
这种多线程处理也需要在系统/操作系统级别进行大量线程/进程处理优化。使它成为一个复杂的问题:D
标签: java multithreading playframework server