Thread.sleep() dentro de loop

Olá, pessoal, estou desenvolvendo um sistema de chat em java, onde faço uso de muitas threads, pra evitar probelmas com desempenho, no lado do servidor eu pensei em um sistema que remove threads bloqueadas que deveriam fazer a autenticação do client verificando nome de usuário e senha, estas threads ficam bloqueadas enquanto o client não envia os dados. O sistema é uma thread de controle que verifica a lista de threads de autenticação e remove as que estão ativas há mais de 1 minuto. Eu queria que o loop de verificação rodasse de minuto em minuto, pra isso, eu chamo Thread,Sleep dentro de um while:

    public void run(){
        while(active){ 
            //Código de verificação
            try{
                this.sleep(60000);
            }catch(InterruptedException e){
                this.interrupt();
            }
        }
    }

O problema é que notei que o NetBeans me mostra o aviso “Invoking Thread.sleep in loop can cause performance problems”, daí fiquei curioso pra entender o motivo, principalmente porque pensei que fazendo a verificação em intervalos, eu teria alguma vantagem em perfomance, e o NetBeans me mostra uma mensagem justamente de perda de perfomance. Se alguém souber a resposta, ficaria muito feliz em saber. Se alguém tiver uma dica melhor de implementação, também ficaria feliz em aprender.

Cara usa ScheduledExecutorService, como vc só quer um thread que execute uma tarefa a cada certo periodo.

ScheduledExecutorService scheduleService = Executors.newSingleThreadScheduledExecutor();
scheduleService.scheduleAtFixedRate(new Runnable() {
			
	@Override
	public void run() {
		
	}
}, 1, 1, TimeUnit.MINUTES);

Sendo o primeiro “1” o tempo da primeira execução e o segundo o periodo das execuções sucessivas.

Rapapel, muito obrigado pela sugestão, eu não conhecia Executors. Implementei minha ideia da mineira que você sugeriu e está funcionando bem.

Disponha.
Boa sorte ai na app.

Abraço.

Você pode usar também o TimerTask (java.util).

Até mais.

[quote=jgavazzisp]Você pode usar também o TimerTask (java.util).

Até mais.[/quote]

O TimerTask também me pareceu interessante, mas a classe Executor me parece mais útil para o que eu preciso, a implementação é mais simples do que seria se eu utilizasse TimerTask. De qualquer forma, muito obrigado pelo interesse em ajudar.