-4

我有一个程序,其中有数千个线程。我目前使用一台主机处理所有需要花费大量时间的线程。如果我想使用多个主机(比如说10个主机,每个主机运行100个不同的线程),我应该如何继续?使用多个主机运行多线程程序

+0

你在做什么与所有这些线程,到底是什么? –

+2

我认为这个问题太广泛了。 你有没有想过一些想法?你能提供一些关于你所做工作性质的更多细节。 – zuckermanori

+0

如果你必须在这样的规模上进行计算,你可以开始研究这种需求的技术构建:像Hadoop,火花/风暴......但显然你的问题太广泛了! – GhostCat

回答

0

在单个JVM上有数千个线程听起来像一个坏主意 - 你可能花大部分时间进行上下文切换而不是做实际的工作。

要跨多个主机分割您的工作,您不能使用由单个JVM管理的线程。您需要让每台主机都暴露一个可以接收部分工作并返回已完成工作结果的API。

一种方法是使用Java RMI(远程方法调用)来完成此任务,但实际上,您的问题缺乏如此多的细节,以便决定选择哪种架构。

0
Creating 1000 threads in on JVM is very bad design and need to minimise count. 
High thread count will not give you multi-threading benefit as context switching will be very frequent and will hit performance. 
If you are thinking of dividing in multiple hosts then you need parallel processing system like Hadoop /Spark. 
They internally handles task allocation as well as central system for syncing all hosts on which threads/tasks are running.