我有以下两个类:
public class MyClass {
public static void faceTheWorld(String Input){
SafeClass sC = new SafeClass();
sC.workWithInput(Input);
}
}
public class SafeClass {
public void workWithInput{String allInp)
work with allInp...
}
我的问题是。如果我在同一时间多次调用MyClass.FaceTheWorld(),它是否总是会创建一个新的SafeClass类实例,还是会尝试一直创建一个名为'sC'的同一个实例?
我是否需要创建一个实例数组,以避免同时创建同一个实例?这看起来如何用Java?
最终我想要实现的是,当我使用'输入'调用FaceTheWorld时,它总是确保'输入'是线程安全的,例如没有其他实例可以修改/访问它。
我使SafeClass同步,这会解决问题吗?
非常感谢
答案 0 :(得分:1)
只要您不访问可由其他线程(类成员或静态变量)更改的变量,如果您只是在静态方法(或任何其他方法)中创建新实例,则永远不会有任何竞争条件因为每个方法都有自己的变量堆栈。
具体到你的问题:
它将始终创建一个新实例。
答案 1 :(得分:1)
它每次都会创建一个新实例,因此它应该是线程安全的,除非您没有告诉我们任何其他奇怪的事情(比如该对象在您调用的方法中使用静态变量)。但如果你担心它会在每次通话中使用相同的对象,那就不会。
答案 2 :(得分:1)
无论您多久创建一个实例,它始终会创建新实例。 Synchroznied关键字不能解决您的问题。