Как синхронизировать статическую переменную между потоками, выполняющими разные экземпляры класса в Java?

Я знаю, что с помощьюsynchronize Ключевое слово перед методом приносит синхронизацию этому объекту. То есть 2 потока, выполняющие один и тот же экземпляр объекта, будут синхронизированы.

Однако, поскольку синхронизация находится на уровне объекта, 2 потока, выполняющие разные экземпляры объекта, не будут синхронизированы. Если у нас есть статическая переменная в классе Java, которая вызывается методом, мы хотели бы, чтобы она синхронизировалась между экземплярами класса. Два экземпляра работают в 2 разных потоках.

Можем ли мы добиться синхронизации следующим образом?

public class Test  
{  
   private static int count = 0;  
   private static final Object lock= new Object();    
   public synchronized void foo() 
  {  
      synchronized(lock)
     {  
         count++;  
     }  
  }  
}

Правда ли, что, поскольку мы определили объектlock это статично, и мы используем ключевое словоsynchronized для этого замка, статическая переменнаяcount теперь синхронизируется между экземплярами классаTest?

Ответы на вопрос(4)

Ваш ответ на вопрос