Visualizzazione dei risultati da 1 a 8 su 8

Discussione: info su Timer

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    49

    info su Timer

    Ciao a tutti
    cosa è meglio utilizzare per calcolare il tempo impiegato per eseguire una determinata routine?
    1) fare la differenza tra due momenti diversi registrando per ognuno di essi il tempo attuale con System.currentTimeMillis()
    2) usare un timer Timer t = new Timer() ed i suoi metodi
    t.start(); e t.stop()?
    grazie

  2. #2
    Io ho usato sempre il primo, per misurare il tempo. Non so gli altri..

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    49
    grazie mille Vincenzo per il tuo feedback.
    Anch'io attualmente sto utilizzando il primo metodo ma mi sembrava interessante anche l'uso dell'oggetto timer e mi piaceva capire se alla fine ci sono dei vantaggi e conviene utilizzzare quest'ultimo o se invece una soluzione vale l'altra.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: info su Timer

    Originariamente inviato da Vbnet
    cosa è meglio utilizzare per calcolare il tempo impiegato per eseguire una determinata routine?
    1) fare la differenza tra due momenti diversi registrando per ognuno di essi il tempo attuale con System.currentTimeMillis()
    2) usare un timer Timer t = new Timer() ed i suoi metodi
    t.start(); e t.stop()?
    Alt. Una cosa è "cronometrare" (prendi il tempo t1, prendi il tempo t2 ... fai la differenza). Un'altra (totalmente differente) è eseguire "qualcosa" a intervalli di tempo.

    Da quanto hai detto è la prima, non la seconda.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    49
    Ciao AndBin
    innanzitutto grazie per la risposta.
    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 e per il momento, ho utilizzato il primo metodo, in un secondo momento però mi sono imbattuto su internet per caso su una discussione sull'oggetto Timer ed i suoi metodi ed ho avuto modo di apprendere che tra i vari metodi ce ne uno: "schedule" che ti consente appunto di eseguire una qualsiasi azione, quindi anche lanciare un controllo, ad intervlli di tempo predefiniti, da lì il perchè dei miei dubbi.
    A questo punto mi chiedo, quindi quali sono i vantaggi/svantaggi di optare per uno piuttosto che per l'altro?
    Grazie 1000

    Ciao

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    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 [...]
    Ok, ri-partiamo dalla tua frase iniziale: "cosa è meglio utilizzare per calcolare il tempo impiegato per eseguire una determinata routine?".

    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:

    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)
    ...
    Tutto nella sequenza detta.

    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?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    49
    Ciao andbin
    hai ragione, nella fretta, probabilmente mi sono espresso male.
    A me interessa capire quale dei due metodi è meglio usare per schedulare una determinata routine e quindi mandarla in esecuzione ad intervalli di tempo regolari.
    Ciao

  8. #8
    Originariamente inviato da Vbnet
    A me interessa capire quale dei due metodi è meglio usare per schedulare una determinata routine e quindi mandarla in esecuzione ad intervalli di tempo regolari.
    Visto che la logica di eseguire un determinato processo ad intervalli di tempo regolari è già implementata nella classe Timer, allora puoi usare una istanza di questa classe (il vantaggio consiste in questo, e non è poco); in questo caso fai buon uso del principio della Riusabilità.
    L'unica cosa che ti resta da fare è definire il tuo task che deve essere, quindi, eseguito più volte.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.