代码设计最佳实践
在软件开发中,多线程环境下的代码设计和对象管理是一个复杂且关键的问题。本文将深入探讨多线程环境下的安全发布、安全布线,以及对象设计的相关原则和实践。
1. 安全发布
在多线程环境中,对象的安全发布是一个重要问题。仅仅保证顺序是不足以实现安全发布的,这是可见性问题的一种体现。线程 B 可能会看到空值,即使线程 A 已经更新了映射。这是因为在没有足够同步的情况下,JVM 不保证线程之间字段的可见性。
以下是一个不安全发布的示例:
public class MoreUnsafePublication {
private EmailDatabase service;
public MoreUnsafePublication(EmailDatabase service) {
this.service = service;
}
public void read() {
System.out.println("Dhanji's email address really is "
+ service.get("Dhanji"));
}
}
在这个例子中,由于缺乏足够的同步,调用 read() 方法的线程不能依赖 EmailDatabase 依赖项可用,可能会导致 NullPointerException 。
解决这个问题的一个
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



