Java多线程和递归方法?

Java多线程和递归方法?,java,multithreading,recursion,Java,Multithreading,Recursion,我有一个关于混合多线程和递归方法的问题。比方说,您在线程中处理具有一些递归方法的对象。是否有可能出现stackoverflow异常?坦率地说,我已经编写了一个车间模拟,在这里我只使用一个递归方法来生成唯一id,并且在大约1分钟后收到stackoverflow异常。 你有过同样的问题吗?还是我是第一个( 提前感谢:)您会因为两个原因而得到这样的例外。 1.无论是否是多线程,如果您的方法有永远调用自身的风险,您将得到StackOverflowException,但这将是一个纯代码错误。 2.如果您的

我有一个关于混合多线程和递归方法的问题。比方说,您在线程中处理具有一些递归方法的对象。是否有可能出现stackoverflow异常?坦率地说,我已经编写了一个车间模拟,在这里我只使用一个递归方法来生成唯一id,并且在大约1分钟后收到stackoverflow异常。 你有过同样的问题吗?还是我是第一个(


提前感谢:)

您会因为两个原因而得到这样的例外。 1.无论是否是多线程,如果您的方法有永远调用自身的风险,您将得到StackOverflowException,但这将是一个纯代码错误。 2.如果您的类是一个具有多个线程访问的属性的单实例,那么另一个线程可能会修改该属性,从而导致当前线程永远无法到达递归的末尾,因为它使用的属性被意外修改。如果是这样,可以将该属性设置为本地线程。
也许可以共享一些代码,以便我们能够更好地提供帮助。

除了其他人已经提到的内容之外,您可能已经耗尽了堆栈空间。您可以通过设置命令行选项-Xss来设置堆栈大小。例如: java-Xss 1M MyClass


小心不要把它设定得太高。如果您一直将其设置得更高,并且不断出现堆栈溢出,那么您的递归可能有问题,正如其他人已经指出的那样。

这可能与多线程无关。更具体地说明代码失败的地方:您开始运行线程了吗?到目前为止,您尝试了什么?在单个线程上运行商店模拟时是否遇到stackoverflow?看到商店模拟代码也会很有帮助。你肯定不是第一个。看看这个问题:问题已经解决了。谢谢你,非常感谢。我有点累了,但我已经找到了导致问题的原因。一切都是关于随机nextInt(param)方法的。