我真的不太明白"代表团"当我们谈论构建一个线程安全的类时。这是什么意思?策略如何有效地构建一个线程安全的类?什么时候会失败?有人可以举个例子吗?
答案 0 :(得分:4)
class Delegator {
private final AtomicInteger counter = new AtomicInteger(0);
public int getNextCounter(){
return counter.incrementAndGet();
}
}
此处Delegator
类已将线程安全性委派给其组件counter
。显然这个班可能已经承担了counter
操作本身的痛苦,但这将重新发明轮子。
需要谨慎使用代表团。如果存在涉及多个变量的状态操作,那么这些变量操作中的每一个都是单独的线程安全是不够的,但是状态转换一起也应该是线程安全的。