实例封闭
确保对象只能由单个线程访问(线程封闭),或者通过一个锁来保护对该对象的所有访问,以确保对象是线程安全的。
实例代码:
@ThreadSafe
public class PersonSet {
@GuardedBy("this")
private final Set<User> mySet = new HashSet<>();
public synchronized void addUser(User user) {
mySet.add(user);
}
public synchronized boolean containsUser(User user) {
return mySet.contains(user);
}
}
及通过“装饰器”封装容器类实现线程安全:
List list = Collections.synchronizedList(new ArrayList());
Map map = Collections.synchronizedMap(new HashMap());
线程安全性的委托
在某些情况下,通过多个线程安全类组合而成的类是线程安全的。
实例代码&#x