Ожидание (некоторое время) всегда должно быть в синхронизированном методе? - PullRequest
2 голосов
/ 08 февраля 2012

У меня многопоточное приложение. Иногда в каком-то потоке происходит исключение по причине внешней сети. Я думаю использовать например wait (60000) - 1 минута для повторного подключения. Должен ли я явно указать синхронизированный метод, например:

public void synchronized reconnect(){
     wait(60000);
................. }

или возможно:

public void reconnect(){
     wait(60000);
................. }

Спасибо.

Ответы [ 2 ]

5 голосов
/ 08 февраля 2012

Как писал Евгений, текущий поток должен получить блокировку объекта. Это не обязательно делать синхронизированным методом. Вы также можете получить блокировку путем явной синхронизации:

public void reconnect() {
   // some code 

   synchronized (this) {
      wait(60000);
   }

   // some other code
}

Это зависит от того, чего вам нужно достичь.

4 голосов
/ 08 февраля 2012

Должно быть!Вы должны получить замок Объекта, прежде чем вы сможете ждать.

Приветствия, Евгений.

...