Como parar uma Thread?

3 respostas
Elbill

Estou com dificuldade para parar uma thread, não tenho certeza se criei a thread corretamente mas deêm uma olhada por favor.

public class Hotkey01 {
    private boolean Habilitar;
    
    public void Start() {
        
        new Thread(new Runnable() { //Cria uma nova Thread
            public void run() {
                Habilitar = true;
                int x = 0;
                while (Habilitar){
                    System.out.println(x);
                    x++;
                }
            }
        }).start();
        
          
    }

    public void Stop(){
        Habilitar = false;
    }

    
    
}

Como que eu faço para parar essa Thread?

3 Respostas

davidbuzatto

Usando o seu método stop não para?
Cuidado com as convenções para nomenclatura em Java… Você nomeou seus métodos e o campo habilitar da mesma forma que nomearia uma classe. Inicie o nome de métodos com letra minúscula.

[]'s

Elbill

Não, o Stop() não está parando o while…

Preciso fazer o while parar após uma ação do usuário que é clicar no botão parar (de outra classe). Esse botão Parar chama o método Stop() da classe que postei o código.

Outra forma que pensei foi parar a Thread, mas não está dando certo…

Elbill

Consegui parar o while. Alterei a variavel habilitar para statica e deu certo.

public class Hotkey01 {
    static boolean habilitar;
    
    public void start() {
        
        new Thread(new Runnable() { //Cria uma nova Thread
            public void run() {
                habilitar = true;
                int x = 0;
                while (habilitar){
                    System.out.println(x);
                    x++;
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException ex) {
                        Logger.getLogger(Hotkey01.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }
        }).start();
        
          
    }

    public void stop(){
        this.habilitar = false;
    }

    
    
}

Valeu!

Criado 9 de dezembro de 2011
Ultima resposta 10 de dez. de 2011
Respostas 3
Participantes 2