Синхронизация против блокировки

ющая функция выполняется в своем собственном потоке:

private void doSendData()
{
    try {

           //writeToFile(); // just a temporary location of a call
           InetAddress serverAddr = InetAddress.getByName(serverAddress);
           serverAddr.wait(60000);
           //Log.d("TCP", "C: Connecting...");
           Socket socket = new Socket(serverAddr, portNumber);
           socket.setSoTimeout(3000);

               try {
                //Log.d("TCP", "C: Sending: '" + message + "'");
                PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
                String message = packData();
                out.println(message);
                Log.d("TCP", "C: Sent.");
                Log.d("TCP", "C: Done.");
                connectionAvailable = true;

             } catch(Exception e) {
                 Log.e("TCP", "S: Error", e);
                 connectionAvailable = false;

               } finally {
                  socket.close();
                  announceNetworkAvailability(connectionAvailable);
                }

         } catch (Exception e) {
              Log.e("TCP", "C: Error", e);
              announceNetworkAvailability(connectionAvailable);
         }
}

Когда исполнение достигает линииserverAddr.wait(60000) это исключение:

java.lang.IllegalMonitorStateException: object not locked by thread before wait()

Кто-нибудь знает, как заблокировать объект или функцию, чтобы предотвратить параллелизм? Я пытался добавить объект блокировки:

private final Lock lock = new ReentrantLock();

и линия

boolean locked = lock.tryLock();

в начале функции, но это не сработало.

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

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