Fazer uma Thread parar e voltar

O meu jogo similar ao tetris está quase pronto.Gostaria de fazer com que quando o jogador errar a minha thread que está executando pare.O usuário digitaria o nome para ser guardado numa tabela no BD junto com a pontuação(isso eu já fiz),porém quando fechasse essa tela o jogador pudesse jogar novamente.

public class Gravidade extends Thread {

    public void run() {
        while (true) {
            try {
                Thread.sleep(gravidade); 
            } catch (Exception e) {
                e.printStackTrace();
            }             
            Point p = objEscolhido.getLocation();
            p.y += 2;
            objEscolhido.setLocation(p);
            trataColisoes();
            trataColErrada();
            painel.repaint();

        }
    }
}

private void fimDeJogo() {
        JOptionPane.showMessageDialog(null, "Você fez " + pontuacao + " pontos!", "Fim de jogo", JOptionPane.INFORMATION_MESSAGE);
        
        if (nomeJog == null) {
            nomeJog = new NomeJogador();
        }
        nomeJog.setVisible(true);   
    }

Qual comando posso usar para parar minha thread e depois executar novamente?

Cria uma variável emExecucao e troca seu while (true) por while (emExecucao)

Na hora de parar você seta a variável emExecucao = false

1 curtida

Valeu cara é isso aí funfou.As vezes me surpreendo por fazer coisas mais “difíceis” tipo configurar o Hibernate e não conseguir fazer isso kkkk

Sem esquecer de sincronizar o acesso à variável, porque sem lock nem volatile a thread de execução pode nunca ver a atualização à variável.

1 curtida