multithreading - threads - ¿Cómo funciona el hilo de la aplicación JavaFX?
python thread library (1)
Tengo un problema con el subproceso de la aplicación Java FX. Aquí hay un pseudo-código:
showMenu();
//Contoller which waits for action(pressing button)...
showLoadingPic();
Thread.sleep(2000);
showMap();
El problema es que la suspensión ocurre en la ventana que se muestra en showMenu (), showLoadingPic () no se muestra en absoluto, y en la ventana final en showMap () se muestra.
La escena en showLoadingPic tiene una barra de progreso que se ejecuta 2 segundos, que es el mismo tiempo que Thread.sleep (2000).
Por lo tanto, parece que los bloques de hilos de la aplicación javafx showLoadingPic () y showLoadingPic () se ejecutan en segundo plano.
¿Alguien puede ayudarme a arreglar esto?
¡Gracias de antemano!
Hay un subproceso de despacho de eventos de Java FX, que maneja todas las tareas relacionadas con la GUI. Debe actualizar todos los componentes de la interfaz de usuario en este hilo. Las tareas de ejecución prolongada, como Thread.sleep
, nunca deberían ejecutarse en este hilo, ya que Windows se bloqueará y la GUI se congelará .
Ejecute todo su código en el hilo principal de la aplicación y realice solo tareas de GUI en el hilo JavaFX, llamando a Platform.runLater
.
Referencias sobre este tema:
- Concurrencia en JavaFX , desde Oracle
- Pregunta relacionada