我需要在Java中执行大约8,000,000个任务。每个任务的运行时间在1到50毫秒之间。我尝试使用循环串行执行这些任务,并使用ThreadPoolExecutor并行执行它们。显然,通过循环串行执行任务要慢得多,而通过ThreadPoolExecutor运行它们可以获得显着的性能提升。但是,我对ThreadPoolExecutor的性能仍不满意。
我能够在4个核心上使用15个线程运行所有8,000,000个任务。我将50,000个任务分批提交给ThreadPoolExecutor。我允许ExecutorCompletionService等待1000毫秒返回结果。经过调整我的应用程序参数后,我需要大约25分钟来处理所有8,000,000个任务。
是否有一种比25分钟更快的方式来运行我的应用程序,例如使用Hadoop(使用多台机器的分布式系统)?我可以使用其他技术或框架。
我能够在4个核心上使用15个线程运行所有8,000,000个任务。我将50,000个任务分批提交给ThreadPoolExecutor。我允许ExecutorCompletionService等待1000毫秒返回结果。经过调整我的应用程序参数后,我需要大约25分钟来处理所有8,000,000个任务。
是否有一种比25分钟更快的方式来运行我的应用程序,例如使用Hadoop(使用多台机器的分布式系统)?我可以使用其他技术或框架。