Java.lang.IllegalArgumentException: timeout value is negative

Oi boa tarde estou com este problema . Uma thread para rodar em determinado horario. Mas quando chega o horario programado é lançada esta Exception. Se alguem puder ajudar de alguma forma agradeço.

public class Servico extends Thread {

private static long MILLI_SEC_DIA = 86400000; //Milisegundos em um dia

public static void main(String[] args) {
	Servico servico =  new Servico();
	servico.start();
}

private static long getMilisegundos() {
	
Calendar calendario = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss",new Locale"pt","BR"));

            Date dataH  =  new Date();
dataH.setHours(13);
dataH.setMinutes(56);
dataH.setSeconds(59);

            Date dataAtual  =  new Date(System.currentTimeMillis());
System.out.println("Hora Data Atual == "+format.format(dataAtual));
System.out.println("Horario e Data para Rodar Serviço Log  == "+format.format(dataH));
return dataH.getTime() - dataAtual.getTime();  

 }

                       //Acontece este Erro 

            java.lang.IllegalArgumentException: timeout value is negative
at java.lang.Thread.sleep(Native Method)
at br.com.teste.Servico.run(Servico.java:44)

[quote=fepe97]
return dataH.getTime() - dataAtual.getTime(); [/quote]
Se a data atual for maior que a data fixa , o resultado será negativo

A própria exception fala isso ! reveja o seu algoritmo …