Java で一意の 10 桁の ID を生成する必要があります。この ID の制限は次のとおりです。
- 数値のみ
- 最大10桁
- 毎秒最大 10 個の異なる ID を作成可能
- 一意である必要があります (アプリケーションが再起動した場合でも)
- データベースに数値を保存できません
- システムに多くの遅延を追加しないように、できるだけ速く
これまでに見つけた最良の解決策は次のとおりです。
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;
}
このソリューションには次の問題があります。
- 何らかの理由で 1 秒あたり 10 個を超える ID を作成する必要がある場合、このソリューションは機能しません。
- 約 32 年で、この ID が繰り返される可能性があります (これはおそらく許容されます)。
この ID を作成する他の解決策はありますか?
私が考えていない他の問題はありますか?
ご協力いただきありがとうございます、