Quote Originariamente inviata da fermat Visualizza il messaggio
ma il timer viene eseguito una sola volta.
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.

Quote Originariamente inviata da fermat Visualizza il messaggio
inoltre non ho neanche ben capito se questo viene eseguito in un altro thread, o no.
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.