"delegation"如何帮助线程安全类?



当我们讨论构建线程安全类时,我并没有真正理解"委派"的概念。这是什么意思?该策略如何有效地创建线程安全类?它什么时候会失败?有人能举个例子吗?

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

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

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

这里,Delegator类已经将线程安全委派给其组件counter。显然,这个班本可以自己承担counter操作的痛苦,但这将是一个重新发明的轮子。

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

最新更新