当我们谈论构建一个线程安全的类时,我并不太了解“委托”的概念。这是什么意思?该策略如何有效地创建一个线程安全的类?什么时候会失败?有人可以举个例子吗?
问问题
817 次
1 回答
5
关于使类线程安全的“委托”意味着该类包含某个其他类对象的引用,该类将线程安全操作卸载到该类对象。考虑 ,
class Delegator {
private final AtomicInteger counter = new AtomicInteger(0);
public int getNextCounter(){
return counter.incrementAndGet();
}
}
在这里,Delegator
该类将线程安全委托给了它的组件counter
。显然,班级本可以自己承担counter
操作的痛苦,但这将是重新发明轮子。
委托需要谨慎使用。如果存在涉及多个变量的状态操作,那么这些变量操作中的每一个单独线程安全是不够的,但是状态转换一起也应该是线程安全的。
于 2012-09-02T20:41:02.173 回答