Java: ID unique à 10 chiffres

J'ai besoin de générer un unique à 10 chiffres de l'ID en Java. Ce sont les restrictions pour cet ID:

  • Numériques Seulement
  • Un Maximum de 10 chiffres
  • Possible de créer jusqu'à 10 différents IDs par seconde
  • Doit être unique (même si l'application re-commence)
  • Pas possible d'enregistrer un numéro dans la Base de données
  • Aussi rapide que possible de ne PAS ajouter trop de lattency pour le système

La meilleure solution que j'ai trouvé jusqu'à présent est la suivante:

private static int inc = 0;

private static long getId(){

    long id = Long.parseLong(String.valueOf(System.currentTimeMillis())
            .substring(1,10)
            .concat(String.valueOf(inc)));
    inc = (inc+1)%10;
    return id;
}

Cette solution présente les inconvénients suivants:

  • Si pour une raison quelconque, il est nécessaire de créer plus de 10 Id par seccond, cette solution ne fonctionne pas.
  • À environ 32 ans, cet ID peut être répétée (Ce qui est probablement acceptable)

Toute autre solution pour créer cette ID?

Tout autre problème, je n'ai pas pensé à la mienne?

Merci pour votre aide,

source d'informationauteur magodiez