Foros del Web » Programación para mayores de 30 ;) » Java »

duda dudela

Estas en el tema de duda dudela en el foro de Java en Foros del Web. que diferencia hay en poner "createAndShowGUI();" para llamar al metodo con el frame al main... con poner Código: SwingUtilities.invokeLater(new Runnable() { @Override public void run(){ ...
  #1 (permalink)  
Antiguo 30/12/2012, 11:31
Avatar de iivo94  
Fecha de Ingreso: febrero-2011
Ubicación: Argentina
Mensajes: 281
Antigüedad: 13 años, 2 meses
Puntos: 3
duda dudela

que diferencia hay en poner "createAndShowGUI();" para llamar al metodo con el frame al main... con poner
Código:
SwingUtilities.invokeLater(new Runnable() {
 @Override
 public void run(){
 createAndShowGUI()}})
?
cual es la diferencia que se ejecuta todo el frame en un hilo de ejecucion distinto? y no es que hay que crear objetos de thread para que funcionen los hilos de ejecucion? tipo Thread hilo;
  #2 (permalink)  
Antiguo 31/12/2012, 02:18
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: duda dudela

Los componentes SWING (botones, tablas, listas, combos, etc) no son seguros para trabajar con ellos con varios hilos simultáneamente (internamente no usan synchronized por ningún lado). Para evitar problemas, lo correcto es manejarlos siempre desde un mismo hilo.

Java ofrece ya un hilo creado para ese propósito, llamado EDT (Event Dispatch Thread), así que lo correcto para evitar problemas de concurrencia con hilos es usar siempre ese hilo cada vez que quieras hacer algo con una ventana (visualizarla, cambiarle el contenido, etc). La forma de decirle a ese hilo ya creado que ejecute algo es por medio del método SwingUtilities.invokeLater(...).

Si no lo usas este hilo, tu aplicación no es muy compleja y no tienes muchos hilos intentando actualizar un mismo componente swing, posiblemente nunca tengas problemas, pero si haces una aplicación en la que varios hilos intentan por ejemplo, actualizar un mismo JTable, posiblemente acabes teniendo problemas y el JTable te quede con datos incoherentes o incluso mal dibujado en pantalla.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:56.