2

当我们谈论构建一个线程安全的类时,我并不太了解“委托”的概念。这是什么意思?该策略如何有效地创建一个线程安全的类?什么时候会失败?有人可以举个例子吗?

4

1 回答 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 回答