Au coeur du JDK : TimeUnit

Aujourd’hui, je vais attirer votre attention sur une petite classe très discrète, pourtant présente depuis Java 5 : java.util.concurrent.TimeUnit.
Comme son nom l’indique, cet enum permet de représenter les unités temporelles usuelles. Rien de bien révolutionnaire, certes, mais ça peut éviter de réinventer la roue dans chacun de nos projets.

NANOSECONDS
MICROSECONDS
MILLISECONDS
SECONDS
MINUTES
HOURS
DAYS

Là où ça devient plus intéressant, c’est que TimeUnit propose des méthodes de conversion entre les unités :

convert(long duration, TimeUnit sourceUnit)
toMillis(long duration)
toSeconds(long duration)
toHours(long duration)
...

En particulier, vu le nombre de méthodes qui prennent des millisecondes en paramètre (Thread.sleep(), Object.wait(), etc.), la méthode toMillis() pourra rendre de grands services et clarifier le code :

// Avant : long oneHourInMillis = 1000 * 60 * 60;
long oneHourInMillis = TimeUnit.HOURS.toMillis(1);

Enfin, cerise sur le gâteau (ou plutôt nain sur la bûche, en cette période de fêtes), TimeUnit facilite l’appel des principales méthodes utilisant des millisecondes :

// Avant : Thread.sleep(1000 * 60)
TimeUnit.MINUTES.sleep(1);
// Avant : Object.wait(1000 * 60 * 2)
TimeUnit.MINUTES.timedWait(object, 2)
// Avant : anotherThread.join(1000 * 60 * 3)
TimeUnit.MINUTES.timedJoin(anotherThread, 3)

En conclusion, maintenant que vous connaissez la discrète mais très utile classe TimeUnit, je pense que vous ne voudrez plus jamais calculer 1000 * 60 * 60 * 24 pour représenter… une simple journée !

2 réflexions sur “Au coeur du JDK : TimeUnit

  • 5 janvier 2011 à 9 h 31 min
    Permalien

    Dommage que MINUTES, HOURS et DAYS ne soient apparus qu’en JDK6

    Répondre
  • 12 janvier 2011 à 15 h 23 min
    Permalien

    Sympa,

    On a plutôt tendance a utiliser les constantes d’apache commons ou de joda, mais ça fait du bien de savoir qu’on peut faire la même chose dans le JDK…

    Répondre

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

%d blogueurs aiment cette page :