5

私のメソッドでは、Swingスレッドでメソッドを実行するためmain(String[] args)の呼び出しはありません。スレッドセーフのためにこれが必要だといつも思っていました。GUIコードを実行する最初のスレッドがGUIスレッドになるので、必要ないと言われました。言い換えれば、Swingは1つのスレッドからしか使用できませんが、どちらを使用するかは関係ありません。しかし、私はこれのソースを見つけることができません、そして私は確信したいと思います。SwingUtilities.invokeAndWaitmain1

4

1 に答える 1

7

あなたが言われたことは誤りです。メソッドはmain最初にメインスレッドによって呼び出されます。GUIに関連するすべてのアクティビティは、イベントディスパッチスレッドと呼ばれる完全に別個のスレッドで実行する必要があります。メインスレッドはEDTにはなりません。

私が話していることを確認するための良い例:

public class ThreadTest {
    public static void main(String[] args) {
        final Thread main = Thread.currentThread();
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                Thread edt = Thread.currentThread();

                System.out.println(main);
                System.out.println(edt);
                System.out.println(main.equals(edt));
            }
        });
    }
}
于 2012-06-12T23:05:33.877 に答える