Se non è richiesto è fortemente consigliato, dato che devi far partire thread periodicamente ti consiglio uno ScheduledThreadPoolExecutor e con il metodo scheduleWithFixedDelay a meno che tu non tratti le race condition con metodi e/o blocchi di codice syncronized. Spero di non aver detto castronerie, in caso contrario vi prego di farmele notare.