我是 Java 的新手,非常喜欢学习它。我制作了一个运行良好的程序,但当我添加更多数据以供处理时需要花费一些时间。我使它线程化,它确实加快了很多速度,但现在我正在考虑尝试加快它的速度(显然,它必须处理的数据越多,花费的时间越长)。仅供引用,我的程序不在线程之间共享任何数据,它获取列表中的一项并进行一些数学运算并将结果上传到数据库。理想情况下,几台工作计算机获取列表中的一些项目,然后执行其工作,然后获取更多工作直到完成
我做了一些研究并找到了队列,但我不确定它是否是我需要的,或者是否还有其他东西(我也在想保持 worker 的完整性/监控可能对我来说太过分了新手)。我家里有 4 台电脑(一些 Linux、mac 和 windows.. 但如果这些解决方案是特定于 os 的,我可以在所有非 linux 系统上安装 linux vm)并且想让他们也开始处理这个任务。我考虑过创建 Java 队列,让其他客户端参与其中并进行处理,但我也看到了库 (rabbitmq)。我还简要介绍了网格计算。
这是要走的路还是有更好的路?我不需要任何代码或任何东西,只是想知道分配线程的解决方案是什么,或者在评估它们时要使用哪些因素。
最佳答案
您可以使用 JMS 或 Hazelcast(例如分布式 ExecutorService)在机器之间分配工作。
我首先要做的是改进您的算法。您可能会发现使用 4 台机器可以使速度提高 2-4 倍,但您可以通过性能分析、重构和调优获得 10-1000 倍的性能提升,而且通常复杂性较低。
关于java - 在多个服务器上分配 Java 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9535421/