我想知道一个类的每个实例是否拥有该类中方法的副本?实例变量的实例方法和线程安全
比方说,我有以下类MyClass
:
public MyClass {
private String s1;
private String s2;
private String method1(String s1){
...
}
private String method2(String s2){
...
}
}
因此,如果两个型动物的用户作出一个实例的MyClass
,如:
MyClass instanceOfUser1 = new MyClass();
MyClass instanceOfUser2 = new MyClass();
是否知道每个用户都在自己的线程副本MyClass
的方法?如果是,那么实例变量就是线程安全的,只要实例方法操纵它们,对吧?
我在问这个问题,因为我经常读到实例变量不是线程安全的。我不明白为什么它应该是这样的,每个用户通过调用new
运算符得到一个实例?
你问每个线程有不同的方法为每个线程有自己的MyClass的实例或MyClass的一个实例吗? – Jeffrey
没有实例变量本质上是线程安全的。如果两个线程可以修改对同一个对象的引用,那么你需要实现某种同步 – Joel
你真的很困惑。线程安全与状态有关。国家是关于领域,而不是方法。你的类的线程安全性完全取决于方法如何使用字段s1和s2。没有他们的身体使得这个问题无法回答。 –