我正在使用java构建期权评估(二叉树)。我的带有1000个步骤的普通顺序代码的二叉树花费了0.1秒。但是,当我尝试使用并行运行它时,大约需要65秒。任何建议和意见将不胜感激。
Binomial Thread is my class which does the calultion
ThreadPoolExecutor threadExecutor = new ThreadPoolExecutor(10000, 10000, 500,
TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(10),
new ThreadPoolExecutor.CallerRunsPolicy());
for (int i = 0; i < 10000; i++) {
Runnable thread = new BinomialThread();
threadExecutor.execute(thread);
}
最佳答案
如果线程数大于处理器数,并且没有等待时间(例如,从网络数据等待,从文件读取等),则性能会下降,而不是增加从一个进程切换到一个进程所需的时间。另一个。
您有10.000个线程,这就是为什么您的程序在多线程环境中比在单线程环境中花费更多时间的原因。