EDT で何を実行する必要があるかを管理するルール (「イベント キュー」よりも「EDT」の方がよく使用されるようです) は、Java の存続期間中に変更されました。そして、「ルール」が変更されるたびに、Sun は EDT で「GUI 関連」の作業をますます行うようにアドバイスしました。
EDT で Java GUI を実行するのはなぜですか?
Swing 自体にいくつかのバグがあるため、EDT が実際に時々クラッシュすることはあまり知られていないことに注意してください。すべての重要な Swing アプリケーションは、バグのある Swing API を使用しているため、EDT が機能しなくなることがあります。
EDT が停止すると、自動的に再起動されるため、これが表示されることはなく、心配する必要もありません。
基本的に、EDT ですべての GUI 関連の操作を行い、EDT の外部ですべての長時間の操作を行います (EDT をブロックしないように)。
EDT の外で長時間の操作を実行する方法の例を求めたEDIT 。これを行うにはいくつかの方法があります。最も単純なケースでは、EDT から新しいスレッドを作成して開始するだけです。1 つの例を次に示します。ユーザーがボタンをクリックすると、リスナー コールバックが呼び出されます。これは EDT で発生することがわかっています...
JButton jb = ...
jb.addActionListener( new ActionListener() {
public void actionPerformed( final ActionEvent e ) {
final Thread t = new Thread( new Runnable() {
public void run() {
// this shall get executed, after start() has been called, outside the EDT
}
});
t.start();
}
} );
より複雑な例については、SwingWorkerなどを参照してください。