Ok, ri-partiamo dalla tua frase iniziale: "cosa è meglio utilizzare per calcolare il tempo impiegato per eseguire una determinata routine?".Originariamente inviato da Vbnet
Tuttavia non capisco ancora bene perchè propendere per un metodo piuttosto che un altro e soprattutto perchè c'è tutta questa differenza tra i due.
Come ti dicevo io devo lanciare dei controlli ad intervalli di tempo regolari [...]
Leggendo questo si dedurrebbe che non devi eseguire qualcosa ogni tot di tempo ma proprio determinare il tempo che ci impiega ad eseguire una certa operazione (o insieme di operazioni).
Quindi a rigor di logica risulterebbe una cosa del tipo:
Tutto nella sequenza detta.codice:... prendi il tempo t1 esegui la/e operazione/i (invocazione di quello che vuoi) prendi il tempo t2 calcola la durata (cioè t2-t1) ...
Questo vuol dire "cronometrare" la esecuzione di qualcosa.
Un'altra cosa, molto ben differente, è far eseguire qualcosa ogni tot di tempo, ad intervalli regolari o a un preciso istante nel tempo. Questo vuol dire "schedulare" la esecuzione di qualcosa.
E per questo esistono due timer nel framework standard: java.util.Timer e javax.swing.Timer. Il secondo è orientato alle interfacce grafiche, il "fire" dell'evento è gestito con un ActionListener e quindi il actionPerformed() è invocato nel contesto del EDT, quindi tutto questo va bene se devi fare qualcosa di veloce con la interfaccia utente.
Il primo timer invece è generico, gestito in un thread a parte, più scalabile e consente di specificare tempistiche in modo più vario e accurato.
Quindi rimane ancora il dubbio di cosa vuoi fare:
a) Vuoi determinare quanto impiega la esecuzione di un qualcosa?
o
b) Vuoi che qualcosa sia eseguito più avanti ad un certo istante e/o ripetuto più volte?