Las reglas que rigen lo que debe realizarse en el EDT (veo que "EDT" se usa con más frecuencia que "Event Queue") han cambiado durante la vida útil de Java. Y cada vez que las "reglas" cambiaban, Sun aconsejaba hacer más y más trabajos relacionados con "GUI" en el EDT.
¿Por qué las personas ejecutan Java GUI en el EDT?
Tenga en cuenta, y esto no es muy bien sabido, que el EDT en realidad hace accidente de vez en cuando, porque oscilación en sí tiene algunos errores. Cada aplicación Swing no trivial está utilizando Swing API que tienen, bueno, errores y, por tanto, de vez en cuando el EDT muere.
Nunca lo ve y no es motivo de preocupación, porque cuando el EDT muere, se reinicia automágicamente.
Básicamente, haga todas las cosas relacionadas con la GUI en el EDT y realice todas las operaciones largas fuera del EDT (para no bloquear el EDT).
EDIT ha pedido un ejemplo de cómo ejecutar una operación larga fuera del EDT. Hay varias formas de hacer esto. En el caso más simple, simplemente crea e inicia un nuevo subproceso, desde el EDT. Aquí está un ejemplo: la devolución de llamada oyente se llama cuando el usuario hace clic en un botón, se sabe que este acontezca en la 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();
}
});
Para ejemplos más complicados, que desea leer en SwingWorker , etc.
¿Cómo puedo hacer operaciones fuera del EDT si es necesario iniciarlas desde mi GUI? (evento de botón, etc.) Además, ¿necesito usar el EDT solo para el cuadro principal? Si el usuario abre otro JFrame desde el marco principal (por ejemplo, una ventana de opción), ¿necesito iniciarlo en el EDT? – asmo
@asmo: Voy a editar mi pregunta para dar un ejemplo – NoozNooz42
@asmo: necesita el trabajo en el EDT para * todo * relacionado con la GUI (entonces en su * "ventana de opciones" * ejemplo, sí, eso necesita hacerse en el EDT también). – NoozNooz42