我有一个java类如下
class User {
String name;
String phone;
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
}
这个类的使用方式是,为每个线程创建这个 User 类的 1 个对象。现在由于每个线程都有一个对象副本,我可以将此类称为线程安全的吗?
我需要同步这些方法吗?
最佳答案
按照您介绍的方式,如果每个线程都有一个副本,那么它可以称为线程安全的,因为访问线程的最大值是一个。
另一件事 - 如果您将字段声明为 private
并将该类的实例创建为 final
,那么它是不可变的(final User user = new User (...)
)。没有 setter ,因此无法修改对象,也无法更改其引用。如果您想保持不变性,则必须让 setter 返回此对象的一个新实例,该实例具有已更改的字段。
@markspace 注意到,更好的方法是将字段声明为 final,因为如果您使用前一个字段并使 User
成为某个类的成员,它将不起作用(除非是 final) .
关于java - 如何使java类线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55134811/