Causing Deadlocks in Swing Code (Follow-up)

It is very dangerous sending out code samples that one does not understand fully. So it was with the last newsletter. Fortunately Aleksey Gureev pointed out to me that the main problem was not with the Swing event thread, but rather with calling a static method from another thread before the static initializer block has completed. For example, the following code displays the same problem:

public class StrangeProblem2  {
  static {
    new StrangeProblem2();
  }

  private static void staticMethod() {
    System.out.println("This is never reached");
  }

  private StrangeProblem2() {
     Thread t = new Thread() {
      public void run() {
        System.out.println("We will now call the static method...");
        staticMethod();
        System.out.println("Static method was called.");
      }
    };
    t.start();

    try {
      t.join();
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }

  public static void main(String[] args) {
  }
}
 
created by Dr. Heinz M. Kabutz 

0 komentar:

Posting Komentar

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
This Theme Modified by Kapten Andre based on Structure Theme from MIT-style License by Jason J. Jaeger