title: why does this code produce deadlock?
body: <pre><code>class A {
      static final int i;
      static {
          i = 128;
  
          Thread t = new Thread() {
              public void run() {
                  System.out.println("i=" + i);
              }
          };
          t.start();
          try {
             t.join();
          } catch (InterruptedException e) {
             Thread.currentThread().interrupt();
          }
      }
  }
  public class MainTesting {
  
  
      public static void main(String[] args) {
          A a = new A();
          System.out.println("finish");
      }
  }
  </code></pre>
  
  <p>I never get <code>finish</code> get printed and value of i.
  Why is it so?</p>