title: A good small example to demonstrate wait() and notify() method in java
body: <p>Can anybody please provide me a good small example demonstrate wait() and notify() functionality in java. I've tried with the below piece of code but it's not showing what i expected. </p>
  
  
  
  <pre><code>public class WaitDemo {
      int i = 10;
  
      int display() {
          System.out.println("Lexmark");
          i++;
          return i;
      }
  }
  </code></pre>
  
      
  
  <pre><code>public class ClassDemo1 extends Thread {
  
      private WaitDemo wd = new WaitDemo();
  
      public static void main(String[] args) {
          ClassDemo1 cd1 = new ClassDemo1();
          ClassDemo1 cd2 = new ClassDemo1();
          cd1.setName("Europe");
          cd2.setName("America");
          cd1.start();
          cd2.start();
  
      }
  
      synchronized void display() {
          System.out.println("Hello");
          notifyAll();
      }
  
      public void run() {
  
          synchronized (this) {
              try {
                  {
                      notify();
                      System.out.println("The thread is " + currentThread().getName());
                      wait();
                      System.out.println("The value is " + wd.display());
                  }
              } catch (InterruptedException e) {
  
              }
  
          }
      }
  }
  </code></pre>
  
  <p>The issue is that the method in the class WaitDemo is not getting executed and as per my idea the SOP after wait() should execute. Please help me out on this.</p>