Как понять метод ожидания и уведомления в Java Thread?

Я очень сбиваю с толку эти два описания:

  1. « Метод ожидания блокирует вызывающий поток и снимает блокировку монитора »
  2. «Метод notify разблокирует один ожидающий поток, но не снимает блокировку монитора»

Вот мои вопросы:

  1. Я знаю, что каждый объект в Java имеет блокировку, но что означает «блокировка монитора»? это то же самое, что и блокировка объекта?

  2. Почему метод notify должен отказываться от блокировки монитора?

  3. Если я попытаюсь сделать объект ожидающим с помощью следующего кода:

     class simpleTask расширяет Thread
    {
    int waitTime;
    
    общедоступный simpleTask (интервал ожидания)
     {
    this.waitingTime = Время ожидания;
     }
    
    public void run ()
     {
    synchronized (this) // это ссылка на текущий объект
     {
    пытаться {
    this.wait (Время ожидания);
     } catch (InterruptedException e) {
     // TODO Автоматически сгенерированный блок catch
    e.printStackTrace ();
     }
     }
    }
    

Как и в первом описании выше, означает ли это, что текущий объект заблокирован ключевым словом synchronized, а затем метод ожидания снимает блокировку?

7
задан Tudor 1 January 2012 в 18:16
поделиться