Tengo una aplicación oscilante que almacena una lista de objetos. Cuando el usuario hace clic en un botón,Prevenir el bloqueo de la GUI durante una tarea en segundo plano
que desea llevar a cabo dos operaciones en cada objeto en la lista, y luego una vez que se haya completado, gráfico de los resultados en un JPanel. He estado probando SwingWorker, Callable & Runnable para hacer el procesamiento, pero no importa lo que haga, mientras proceso la lista (que puede tardar unos minutos, ya que está enlazado a IO), la GUI está bloqueada.
tengo la sensación de que es probablemente la forma en que estoy llamando a los hilos o algo, o podría ser que ver con la representación gráfica de funciones? Eso no está enhebrado ya que es muy rápido.
que tengo que hacer las dos etapas de procesamiento con el fin también, así que ¿cuál es la mejor manera de asegurar que el segundo ha esperado en la primera? He usado join(), y luego
while(x.isAlive())
{
Thread.sleep(1000);
}
para tratar de asegurar esto, pero me preocupa que esto podría ser la causa de mi problema también.
que he estado buscando por todas partes para algunas indicaciones, pero como yo no puedo encontrar ninguna estoy seguro de que estoy haciendo algo estúpido aquí.
Podría ser útil incluir algún código que muestre cómo está utilizando SwingWorker. –
de acuerdo; muéstranos el código problemático. – Rob