2013-03-10 2 views
0

Сколько потоков будет доступно одновременно, если метод статически синхронизирован, а также сколько потоков будет обращаться одновременно, если метод статичен и, наконец, сколько потоков будет обращаться одновременно, если метод синхронизирован методом экземпляра?Синхронизация потоков для методов?

ответ

2
  • Использование static только не мешает любой нити от доступа к методу в любое время
  • Используя synchronized только, то Приобрел монитор относится к объекту, для которого метод был вызван. Вы по-прежнему можете использовать тот же метод для других экземпляров того же класса.
  • Используя static synchronized, приобретаемый монитор относится к class вместо этого к определенному объекту, что означает, что статический метод может быть вызван только одним потоком одновременно , независимо от конкретных случаев

След. Обратите внимание, что несколько потоков могут одновременно вызывать два синхронизированных метода на одном и том же объекте, если один из методов является статическим, это может быть ловушка.

+0

Это правильный ответ, хотя «последствия» могут быть разъяснены немного более четко: т.е. причина, по которой может выполняться более одного потока, - это статическая синхронизация только прекращает выполнение другими потоками, пытающимися запустить другие статические методы или против самого класса. В то время как синхронизированные методы экземпляра предотвращают другие потоки, запущенные против других синхронизированных методов этого конкретного экземпляра. Причина в том, что для каждого из экземпляров есть монитор для класса и монитора: синхронизация идет против одного монитора. – javadba

Смежные вопросы