System.currentTimeMillis() 只是获取当前的时间戳,单位是毫秒,但是这并不是唯一的.
如果你在1毫秒中进行了两次操作,那么这两个ID就是相等的.
问题的解决看你要求的精度如何了.一般可以使用当前的时间戳作为Random发生器的种子.
比如Random ran = new Random(System.currentTimeMillis());
然后需要唯一ID的时候使用ran.nextLong()获取,实际上这样的选择还是看你对于ID精度的要求.可以使用更加复杂的随机算法来产生,比如说产生一串随机字符串加上数字等等.