今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

↑を書いて気がついたこと

通常、Javaアプリケーションを書くのに、既存の JavaVM 上で動作する他のクラスから、main() メソッドを呼び出されて起動するなんてことは想定しないだろう。
ここに大きな問題が隠れていることに気がついた。Java による GUI アプリケーションの多くは、Swing の Sinle Thread Rule*1 なんて気にしないで作られている。main() メソッドを呼び出された側からすると、既に EventDispatchThread が動作しているなんて予想もしない。

    public static void main(String args[]) {
        JFrame f = new JFrame();
        // コンポーネントの追加
        f.show();
    }

なんてやると、いきなり GUIデッドロックしてしまう可能性がある。

*1:詳しくは JAVA PRESS Vol.35 のワタシの記事を見てください(と、さりげなく宣伝)