Hai usato il
schedule(TimerTask task, long delay)
che esegue il task una volta sola, dopo un certo ritardo. Se vuoi che sia ripetitivo, allora serve l'altro schedule:
schedule(TimerTask task, long delay, long period)
oppure
scheduleAtFixedRate(TimerTask task, long delay, long period)
Vedi documentazione javadoc, anche per la differenza tra schedule e scheduleAtFixedRate.
Dal javadoc:
Corresponding to each Timer object is a single background thread that is used to execute all of the timer's tasks, sequentially.
P.S. i gc() di Runtime o System sono solo dei "suggerimenti" per la JVM. Non c'è alcuna garanzia, in generale, che la JVM faccia quello nel momento in cui lo chiedi.![]()