31/12/2012, 02:18
|
| Colaborador | | Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 3 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. |