【问题标题】:How does "delegation" aid with thread-safe classes?“委托”如何帮助线程安全类?
【发布时间】:2012-09-03 04:41:02
【问题描述】:

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

【问题讨论】:

    标签: java multithreading concurrency thread-safety composition


    【解决方案1】:

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

    class Delegator {  
        private final AtomicInteger counter = new AtomicInteger(0);
    
    
      public int getNextCounter(){
          return counter.incrementAndGet();
       }
     }
    

    这里Delegator 类已将线程安全委托给它的组件counter。显然,班级本可以自己进行 counter 操作,但那将是重新发明轮子。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多