“委托”如何帮助线程安全的类?

时间:2012-09-02 20:25:53

标签: java multithreading concurrency thread-safety composition

我真的不太明白"代表团"当我们谈论构建一个线程安全的类时。这是什么意思?策略如何有效地构建一个线程安全的类?什么时候会失败?有人可以举个例子吗?

1 个答案:

答案 0 :(得分:4)

关于使类线程安全的“委托”意味着该类包含该类卸载线程安全操作的其他类对象的引用。考虑一下,

class Delegator {  
    private final AtomicInteger counter = new AtomicInteger(0);


  public int getNextCounter(){
      return counter.incrementAndGet();
   }
 }

此处Delegator类已将线程安全性委派给其组件counter。显然这个班可能已经承担了counter操作本身的痛苦,但这将重新发明轮子。

需要谨慎使用代表团。如果存在涉及多个变量的状态操作,那么这些变量操作中的每一个都是单独的线程安全是不够的,但是状态转换一起也应该是线程安全的。