нужен ли синхронный доступ к статическим методам в java? - PullRequest
5 голосов
/ 16 августа 2011

Имеют ли разные потоки, обращающиеся к методу "foo", свои собственные копии локальных переменных, или это необходимо для синхронизации этого метода?

class X {
   static returnType foo( Object arg) {
      Object localvar;
      // perform some calculation based on localvar and arg.
      // no non-local variable is used i.e: this is a utility method.
      // return something.
   }
}

Ответы [ 3 ]

15 голосов
/ 16 августа 2011

Вам не нужно синхронизировать этот метод. Локальная переменная создается в «пространстве памяти» текущего потока, и нет никакого способа, к которому она будет доступна любому другому потоку (из того, что вы показали выше).

1 голос
/ 16 августа 2011

Поскольку используемые переменные определены / используются в своей собственной области, нет необходимости синхронизировать метод.

0 голосов
/ 16 августа 2011

Метод не должен быть синхронизирован, но вы должны использовать конечную переменную arg, т.е.
статический returnType foo (конечный аргумент объекта).

...