Java:外部类和内部类之间的同步

Pra*_*nna 2 java synchronization

我的代码类似于以下内容:

class OuterClass
{
   private final AtomicInteger count = new AtomicInteger(0);

   private class InnerClass extends TimerTask
   {
       public void run()
       {
            ......
            ......
            incremenetCount();
       }
   }

   public void doSomething()
   {
        .......
        .......
        incremenetCount();
   }

   private void incrementCount()
   {
      count.incrementAndGet();
   }
}
Run Code Online (Sandbox Code Playgroud)

呼唤incrementCount从内部类一样从外部类中的任何其他函数调用它作为同步实际上是围绕着变量count

aio*_*obe 5

从内部类调用incrementAndCount与从外部类中的任何其他函数调用它相同[...]

是的,incrementCount()从内部类调用incrementCount()与从外部调用调用相同.

所有非静态内部类都具有对封闭类的对象的隐式引用,并且通过此引用incrementCount()将调用它.

(如果你的内部类是静态的,故事会有所不同.)

因为同步实际上是变量计数的?

无所谓.无论您是从内部还是从外部类进行调用,都会在同一对象上调用相同的方法.