Eu gostaria de travar a Thread atual do meu programa enquanto executo uma segunda thread, pois preciso de seu retorno, para ilustrar meu problema segue o código abaixo:
Task task = new Task() {
@Override
protected Object call() {
try {
this.updateMessage("carregando teste...");
for (int i = 1; i <= 10; i++) {
System.out.println("Número: " + i);
Thread.sleep(1000);
}
this.updateMessage("fim");
return "Eba!!!!";
} catch (InterruptedException ex) {
new Logger().erro(this.getClass(), "start(Stage stage)", ex);
return null;
}
}
};
this.abreStageDoJavaFX();
new Thread(task).start();
this.fechaStageDoJavaFX();
Quando eu faço o comando new Thread(task).start(); ele inicia a thread mas continua a atual, logo, ele abre e fecha minha tela imediatamente após iniciar a thread. Eu tentei fazer o seguinte:
abreStageDoJavaFX();
new Thread(task).start();
while(!task.isDone()){
Thread.sleep(1000);
}
this.fechaStageDoJavaFX();
E realmente a Thread principal do meu programa ficou presa no while enquanto a segunda thread não terminou, porém, o método this.abrirStageDoJavaFX(); foi executado sem que a tela aparecesse, é como se a view só fosse atualizada após o fim da execução de todo o método que chamou ela, e como esperado o método this.fechaStageDoJavaFX() fechou a tela (que nem chegou a abrir) após sair do while… Alguém sabe como abrir um Stage, iniciar uma thread, esperar até o fim dela, e depois fechar esse stage?