Java并行编程性能建议

标签 java multithreading

我正在使用 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 个线程,这就是为什么您的程序在多线程环境中比单线程环境花费更多时间。

关于Java并行编程性能建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28940612/

相关文章:

java - 使用迭代值增量的趋势分析

java - 在处理中保存串行数据

c++ - Boost线程等待条件

c# - ReactiveUI 命令并发(WebClient)

java - 从两个sql服务器快速加载数据

java - 子类型 SwingWorker : where would I place my statements that would not run in the GUI thread

java - Junit 模拟对象

java - 创建动态嵌套 JSON Java

java - HttpURLConnection.getInputStream() 的本地 Web 服务上出现 FileNotFoundException

multithreading - 这种释放/获取语义的使用是否包含潜在的数据竞争?