2

スレッドセーフなクラスの構築について話すとき、「委譲」の概念がよくわかりません。どういう意味ですか?そして、戦略はどのようにしてスレッドセーフなクラスを効果的に作成するのでしょうか? そして、いつ失敗する可能性がありますか?誰かが例を挙げてもらえますか?

4

1 に答える 1

5

クラスをスレッドセーフにすることに関する「委任」とは、このクラスがスレッドセーフ操作をオフロードする他のクラスオブジェクトの参照がクラスに含まれていることを意味します。検討 、

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


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

ここで、Delegatorクラスはスレッドセーフをその component に委任していますcounter。明らかに、クラスはcounter操作自体を行うという苦痛を負うことができたかもしれませんが、それは車輪の再発明になります.

委任は慎重に使用する必要があります。複数の変数を含む状態操作がある場合、これらの変数操作のそれぞれが個別にスレッドセーフであるだけでは十分ではありませんが、一緒の状態遷移もスレッドセーフである必要があります。

于 2012-09-02T20:41:02.173 に答える