假设我创建了一个名为Calculator的单例类,其方法添加了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
同时说10,000次,会不会有任何问题?
案例2: 如果这个类不是单例,而是普通类,那么如果我做同样的事情会同时调用它会发生什么。
案例3: 现在,如果我的类不是单例,并且我的add方法是静态方法,那么如何使用内存?
所以我怀疑它是如何表现的,给定场景中的Java内存模型是什么。哪个有效或推荐一个?能帮助我理解这个吗?
答案 0 :(得分:3)
案例1:既然它是单身人士,如果我们打电话会有任何问题 同时添加方法说10,000次?
这里没有并发问题:方法add
没有任何副作用(它不会改变对象的状态)。
案例2:如果这个类不是单例,那么普通类则是什么 如果我做同样的事情,同时调用它会发生。
与前一个答案相同。
案例3:现在,如果我的班级不是单身,而且我的加法是一个 静态方法然后如何使用内存?
与前两个相同的答案:方法是否为静态无关紧要,每次使用两个参数调用它时,它将对这些参数执行计算而不更改实例/类的状态。
所以我怀疑它是如何表现的,什么是Java内存模型 给定方案。哪个有效或推荐一个?请你 帮助我理解这个?
同样,没关系。不存在并发问题,因为没有修改状态。这与并发性或与JMM无关。
答案 1 :(得分:-1)
如果方法同时调用则没有问题。对于你的所有情况,没有问题。 没有并发问题,因为没有修改状态。所以没有什么会影响。
如果想要在多线程环境中访问它,那么您需要将其设置为synchronised
以保证线程安全。