Man*_*ish 5 java multithreading thread-safety
我有一个java类如下
class User {
String name;
String phone;
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
}
Run Code Online (Sandbox Code Playgroud)
使用此类的方式是,为每个线程创建此 User 类的 1 个对象。现在由于每个线程都有一个对象副本,我可以将此类称为线程安全吗?
我需要同步这些方法吗?
按照您提出的方式,如果每个线程都有一个副本,那么它可以称为线程安全的,因为访问线程的最大值为一。
另一件事 - 如果您将字段声明为private并将该类的实例创建为final,那么它是不可变的 ( final User user = new User(...))。没有设置器,因此无法修改对象,也无法更改其引用。如果你想保持不变性,你必须让 setter 返回该对象的一个新实例,其中字段已更改。
@markspace 注意到,更好的方法是将字段声明为 Final,因为如果您使用前一个字段并成为User某个类的成员,它将不起作用(除非是 Final)。
| 归档时间: |
|
| 查看次数: |
5224 次 |
| 最近记录: |