Load com Threads

0 respostas
java
B

Estou criando uma tela de load para consultas no banco que possam demorar muito. Enquanto a consulta acontece a tela com um gif de carregando aparece.
O meu problema é o seguinte: quando eu chamo o requestStop() para mudar o valor da variável o laço de repetição WHILE no método Run da thread não é acessado, logo a minha tela não fecha.
Alguma sugestão? Segue meu código:

/*
 * 
 */
package load;

import javax.swing.*;

class SplashWindow extends JWindow {

    Thread splashThread;
    private volatile boolean stopRequested = false;

    public SplashWindow() {
    }

    public SplashWindow(JDialog f) {
        Thread n = new Thread(new Runnable() {
            @Override
            public void run() {
                boolean done = false;
                while (!stopRequested && !done) {
                    // abrir a tela com o gif de load
                    f.setVisible(true);
                }
                //fechar a tela 
                f.setVisible(false);
                f.dispose();
            }
        });
        n.start();
    }

    public void requestStop() {
        stopRequested = true;
    }
}
Criado 28 de janeiro de 2019
Respostas 0
Participantes 1