- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要用 Java 执行大约 8,000,000 个任务。每个任务的运行时间在 1 到 50 毫秒之间。我已经尝试使用循环串行执行这些任务,并使用 ThreadPoolExecutor
并行执行这些任务。显然,在循环中连续运行它们要慢得多,然后通过 ThreadPoolExecutor
运行它们会有显着的性能提升。但是,我对 ThreadPoolExecutor
的性能仍然不满意。
我能够在 4 个内核上使用 15 个线程运行所有 8,000,000 个任务。我在向 ThreadPoolExecutor
提交任务时批处理 50,000 个任务。我允许 ExecutorCompletionService
有 1000 毫秒的超时时间以返回结果。在使用这些参数调整我的应用程序后,我有大约 25 分钟的时间来处理所有 8,000,000 个任务。
有什么方法可以让我的应用程序运行速度超过 25 分钟,也许是 Hadoop(使用多台机器的分布式系统)?我愿意使用其他一些技术或框架。
最佳答案
这Akka tutorial展示了 Akka 如何帮助处理并行任务。
我没有任何使用 Akka 的实践经验,但我的理解是它负责根据部署时的配置(例如线程数、进程数、集群中的主机数...)扩展应用程序,任务实现几乎没有变化。
有关维基百科的更多信息:The key points distinguishing applications based on Akka actors
关于java - 在短时间内用 Java 执行数百万个任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25497590/
3-d 中的点由 (x,y,z) 定义。任意两点 (X,Y,Z) 和 (x,y,z) 之间的距离 d 为 d= Sqrt[(X-x)^2 + (Y-y)^2 + (Z-z)^2]。现在一个文件中有一百
我是一名优秀的程序员,十分优秀!