Como fazer para "pausar" a execução de um programa java e depois voltar a executar?

6 respostas
B

Estou fazendo um programa java que simula um algoritmo e gostaria de colocar dois botões, um que pausasse a simulação e outro pra continuar... tentei usar alguns métodos da classe Thread mais não tive sucesso... alguém pode me ajudar?
OBS: só irei usar uma thread

tentei criar algo como:
private class MyThread extends Thread {
        boolean esperar = false;

        // é chamando quando a Thread é iniciada
        @Override
        public void run() {
            while(true) {
                // verificar se Thread deve esperar
                synchronized(this) {
                    while(esperar) {
                        try {
                            wait();
                        } catch(Exception e) {
                            //
                        }
                    }
                }
                // processamento
            }
        }
    }

    public void pausar() {
        synchronized(thread) {
            thread.esperar = true;
        }
    }

    public void continuar() {
        synchronized(thread) {
            thread.esperar = false;
            thread.notify();
        }
    }

e usaria os 2 metodos dentro de outra classe, mas nao funciona

6 Respostas

B

ninguém? :frowning:

A

tentar usar o método join(); da classe thread, só dá uma olhada na documentação do java!!!

V

Ué, por que não funciona?

Deveria funcionar sim. Mas claro, você tem que colocar o seu processamento condicionado a esses métodos (processar um pouquinho e testar com aquele while, processar mais um pouquinho, testar aquele while).

Não tem um jeito de simplesmente “pausar” uma thread.

B

não seria eu colocar o método “pausar()” dentro do meu método que eu quero que pause? :S não funcionou

B

Bom, acho que esta faltando vc dar um notify dentro do método pausar.
Editado : bom li com pressa e me enganei, ignore o que eu disse, parece estar tudo ok mesmo.

B

como eu poderia usar os métodos pausar() e continuar() dentro de outro método?
não seria só dar um start na thread dentro do método?

Criado 24 de outubro de 2010
Ultima resposta 25 de out. de 2010
Respostas 6
Participantes 4