这是对您的一个小改进,但应该具有d性。
本质上,除非当前的时间自上次ID以来一直未勾选,否则我们使用当前时间(以毫秒为单位),在这种情况下,我们只返回return
last + 1。
private static final long LIMIT = 10000000000L;private static long last = 0;public static long getID() { // 10 digits. long id = System.currentTimeMillis() % LIMIT; if ( id <= last ) { id = (last + 1) % LIMIT; } return last = id;}
因为它应该以相对较短的周期速率管理高达每秒1000次。要延长循环速率(但要缩短分辨率),可以使用
(System.currentTimeMillis() /10) % 10000000000L或
(System.currentTimeMillis() / 100) % 10000000000L。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)