在Java中,不可变(Immutable)对象是指一旦创建,其状态就不能改变的对象。不可变对象天然是线程安全的,因为它们的状态不会发生变化,所以多个线程可以安全地共享同一个不可变对象,而无需额外的同步措施。
要创建一个不可变的类,需要遵循以下几个步骤:
final,以防止它被继承。private和final,以确保它们在对象创建后不会被修改。public或protected的,以便外部代码可以创建对象。下面是一个简单的不可变类示例:
public final class ImmutableExample {
private final int id;
private final String name;
private final List<String> items;
public ImmutableExample(int id, String name, List<String> items) {
this.id = id;
this.name = name;
this.items = new ArrayList<>(items); // 创建副本,防止外部修改
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public List<String> getItems() {
return Collections.unmodifiableList(items); // 返回不可修改的副本
}
}
在这个例子中,ImmutableExample类的状态在创建后就不能改变,因此它是线程安全的。当多个线程共享同一个ImmutableExample对象时,无需担心数据竞争或其他线程安全问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。