gpt4 book ai didi

Java线程安全递归

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:30 26 4
gpt4 key购买 nike

我有嵌套类 CRecursion,它有执行递归的方法。此 CRecursion 在许多线程中创建。来自主类的线程方法是否安全调用?谢谢。

class A {
method1() {....}

for(int i=0;i<100;i++){
execute(new CRecursion(...))
}

protected CRecursion {

calculate (par){
if (some_condition) {
calculate(par1)
} else {
String s=method1(value);
.....
}

}
....
}

变量值是对象。但是每个方法都是内部的。

最佳答案

如果递归例程使用的对象被限制在同一个线程中,那么是的,递归例程是线程安全的。阅读 this related StackOverflow question on thread confinement and it's impact on thread-safety 会有所帮助.

在这种特殊情况下(使用您发布的代码),您需要确保:

  • CRecursion 的构造函数的参数不得在多个线程之间共享。如果共享它们,则以下几点变得相关。
  • 在递归例程中不得访问(读取或写入)跨多个线程共享的任何对象。
  • 递归例程使用局限于当前栈帧的局部变量。该例程不得访问任何其他共享存储区域(Java 调用堆栈除外)以在调用之间交换数据。

关于Java线程安全递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7532599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com