P.S.: il tuo codice non implementa una tolleranza del 10% sul controllo della differenza di tempo, il che a mio avviso è molto importante, considerato che il sistema può sempre bloccarsi per qualche attimo e non far ripartire il thread dopo l'esatto tempo specificato nella funzione Sleep.