Java 我们需要同步这个类的add()方法吗?

Java 我们需要同步这个类的add()方法吗?,java,Java,如果这个类在多线程环境中使用,比如说100个线程同时调用这个方法 案例1:实例方法 public class test { public int add(int a , int b ){ return a+b ; } } 案例2:静态方法 public class test { public static int add(int a , int b ){ return a+b ; } } 请回答这两种情况。因为您没有使用任何状态/实例变

如果这个类在多线程环境中使用,比如说100个线程同时调用这个方法

案例1:实例方法

public class test {

  public int add(int a , int b ){

    return a+b ;
     }

}
案例2:静态方法

public class test {

  public static int add(int a , int b ){

    return a+b ;
     }

}

请回答这两种情况。

因为您没有使用任何状态/实例变量,所以不需要同步方法或对象


一个友好的建议:将方法设置为静态。Ans在类上调用它。

它不需要任何同步,因为所有变量都是本地变量。i、 实际上,任何调用方之间都没有共享变量

如果您这样做了,您将需要同步,因为var c是共享的。在最终“返回c”中检索c之前,另一个线程可能已经对其进行了修改

public class test {

  int c = 0;

  public int addKeep(int a , int b ){
          c = a + b;
          return c;
     }
}

这里的另一个答案是让它静止。嗯,这取决于你需要做什么。如果add(inta,intb)是子类可以重写的行为,则将其保留为实例方法。如果它本身是Math.class的一部分,则将其设置为静态,因为可能永远不需要对其进行重写。

如果对象是可变的,并且您正在执行读取更新操作,那么我们只需要对getter和setter使用同步块(即,可变方法).

你能理解意图吗?语法在这里不重要。它不是语法。。这是语法!感谢您的回复。但是IBM的一个白痴开始同步它;)请不要因为少数人犯了错误而责怪整个公司。。。IBM发布了很棒的代码。。。他们有一些最好的计算机工程师。如果此答案解决了您的问题,请单击此答案旁边的勾号将其标记为已回答。如果您喜欢答案,也可以单击答案旁边的向上箭头进行向上投票。您正在回答自己的问题吗?:)如果您有其他信息,请编辑您的问题。