9

私が読んでいる本では、マルチスレッドを使用した GUI のすべての例に次のようなものがあります。

public static void main(String[] args) throws Exception
{
    EventQueue.invokeLater(new Runnable()
    {
        public void run()
        {
            JFrame frame = new SomeKindOfFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
    });
}

(つまり、EventQueue)。コードはメイン (EDT) スレッドで自動的に実行されませんか?

4

2 に答える 2

15

メインスレッドは EDT と同じではありません。追加System.out.println(Thread.currentThread().getName()すると、. main_ _main()AWT-EventQueue-0run()Runnable

ここでは、物事を明確にするのに役立つSwing のシングル スレッド ルールの歴史について説明します。

于 2011-04-25T17:27:01.843 に答える
8

デスクトップGUIアプリケーションは通常、このように機能します。GUI用に1つのスレッドがあり、残りのアプリケーション用に1つまたは複数のスレッドがあります。を使用しEventQueueて、GUIスレッドが他のスレッドから何を実行するかを指定します。

于 2011-04-25T17:28:24.460 に答える