while infinito en el main de un JFrame

angelaj
16 de Diciembre del 2004
hola :), en mi aplicación tengo un while infinito en el main de mi frame principal, con el while revizo el inicio de un evento, hacer esta revisión en el main me permite ejecutar otros eventos, el problema es que la aplicacion queda muy lenta, alguien sabe como mejorar esto? muchas gracias por la atención :)

x
16 de Diciembre del 2004
qué intentas hacer precisamente? quizá se podría mejorar de otra manera

angelaj
16 de Diciembre del 2004
La aplicacion hace simulaciones, tengo 3 botones para iniciar, parar y terminar una simulacion, son simulaciones multiagente, usamos el Api Swarm

Sin el while en el main, al dar click en el boton iniciar en su actionPerformed se invocaban los metodos que realizan la simulacion pero el problema era que no podia dar click en los otros dos botones, hasta que terminaran los metodos invocados, entonces no se podia detener ni terminar la simulacion cuando el usuario lo deseaba.

Para tratar de solucionar esto usamos hilos que nos permitieran concurrencia pero siempre teniamos problemas con el Api, habian unos conflictos muy raros, asi que finalmente la unica solucion fue revisar en el main del frame constantemente dentro de un ciclo while si una variable boolean era verdadera. Cuando se da click en el boton de iniciar la variable se pone en verdadero y entonces, dentro del while, se llaman a los metodos que realizan la simulacion. De esta manera si es posible ejecutar los eventos de los otros dos botones para detener o terminar la simulacion

el codigo del main y del actionPerformed es el siguiente depronto asi puedes entender mas :), es corto, otra vez muchas gracias por tu atención

public static void main(String args[]) {
ctrlSimulacion=new CtrlSimulacion(args);
FrmPrincipal frmP=new FrmPrincipal();
frmP.show();
while(antesIniciar){
if(iniciar){
iniciar=false;
ctrlSimulacion.iniciar(frmTS,frmP);
}
}
}

private void jMenuItemIniciarActionPerformed(java.awt.event.ActionEvent evt) {
inciar=true;
}