1

我对 Java 的线程世界比较陌生,需要一些帮助。我正在使用深度递归算法来构建基于 Graphstream ( http://graphstream-project.org/ ) 库的图形。但是我遇到了 Stackoverflow 错误。我确信我的算法是正确的(我小规模测试过)。

我阅读了有关线程以及这如何提供帮助的信息。我的想法是为每个递归生成一个新线程(可能达到数百万:()..这也会生成很多子图..最后,我必须将所有这些子图合并到一个线程中。你们认为这真的有助于摆脱 stackoverflow 问题吗?或者你对我有什么其他的想法!?谢谢!

4

2 回答 2

1

通常,您的想法称为MapReduce。谷歌搜索应该可以帮助您找到示例实现。

由于您的问题是堆栈溢出错误,请记住,您可以将每个递归重写为不会导致堆栈溢出错误的循环算法。

创建大量线程通常是个坏主意。只需使用一个ThreadPool或一个Executor服务。

于 2013-07-22T13:58:51.407 回答
0

数百万个线程不是一种优雅的方式。在 java.concurrent.Executor 上启动 Runnables,而不是线程。这样,您还将摆脱 Stackoverflow,并使算法在所有可用处理器上并行运行。

于 2013-07-22T11:34:28.380 回答