title: Can two threads access a synchronized method at the same time?
body: <pre><code>    public class Deadlock {
      static class Friend {
          private final String name;
          public Friend(String name) {
              this.name = name;
          }
          public String getName() {
              return this.name;
          }
          public synchronized void bow(Friend bower) {
              System.out.format("%s: %s"
                  + "  has bowed to me!%n", 
                  this.name, bower.getName());
              bower.bowBack(this);
          }
          public synchronized void bowBack(Friend bower) {
              System.out.format("%s: %s"
                  + " has bowed back to me!%n",
                  this.name, bower.getName());
          }
      }
  
      public static void main(String[] args) {
          final Friend alphonse =
              new Friend("Alphonse");
          final Friend gaston =
              new Friend("Gaston");
          new Thread(new Runnable() {
              public void run() { alphonse.bow(gaston); }
          }).start();
          new Thread(new Runnable() {
              public void run() { gaston.bow(alphonse); }
          }).start();
      }
  }
  </code></pre>
  
  <p>when i run this program i am getting the output as </p>
  
  <p>Alphonse: Gaston  has bowed to me!
  Gaston: Alphonse  has bowed to me!</p>
  
  <p>So can two threads access a synchronized method at the same time?</p>