gpt4 book ai didi

java - 在单例类中并发调用方法

转载 作者:行者123 更新时间:2023-12-02 03:38:42 26 4
gpt4 key购买 nike

假设我创建了一个名为 Calculator 的单例类,其方法 add 需要 2 个参数。

public class Calculator {
private static Calculator instance = new Calculator();

public static Calculator getInstance() {
return instance;
}

public int add(int num1, int num2) {
return num1 + num2;
}
}

情况1:既然是单例,如果我们并发调用add方法一万次会不会有问题?

情况 2:如果这个类不是单例,而是一个普通的类,那么如果我做同样的事情,同时调用它会发生什么。

案例3:现在,如果我的类不是单例,并且如果我的 add 方法是静态方法,那么内存将如何使用?

所以我的疑问是它的行为方式,给定场景中的 Java 内存模型是什么。哪一种有效或推荐?你能帮我理解这一点吗?

最佳答案

Case 1: Now since it is singleton, will there be any issues if we call the method add concurrently say 10,000's of times?

这里不存在并发问题:方法add没有任何副作用(它不会改变对象的状态)。

Case 2: If this class is not singleton, and a normal class then what will happen if I do the same thing, calling it concurrently.

与上一个答案相同。

Case 3: Now if my class is not singleton and if my add method is a static method then how the memory will be used?

与前两个相同的答案:无论该方法是否静态,每次使用两个参数调用它时,它都会对这些参数执行计算,而不改变实例/类的状态。

So my doubt is how it behaves, what is the Java memory model in the given scenarios. Which is efficient or recommended one? Can you please help me in understanding this?

再说一次,这并不重要。不会有并发问题,因为没有状态被修改。这与并发或 JMM 无关。

关于java - 在单例类中并发调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37129528/

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