Java AEM CQ-System.currentTimeMillis()返回重复结果

Java AEM CQ-System.currentTimeMillis()返回重复结果,java,timer,system,aem,java.util.concurrent,Java,Timer,System,Aem,Java.util.concurrent,我正在做一个AEM项目,我有一个组件X。沿着这个组件,我有另一个组件,它是一个X的容器。因此,我可以拖动X个实例并将它们放到容器上 为了避免组件X的多个实例之间出现问题,我为它们分配了一个id,从关于X.jsp的 long id = System.currentTimeMillis(); 然后,在jsp中,我有一些类似于: <div id='<%= id %>'> </div> 我是不是疯了,currentTimeMillis正在返回重复的值?可能吗 可能

我正在做一个AEM项目,我有一个组件X。沿着这个组件,我有另一个组件,它是一个X的容器。因此,我可以拖动X个实例并将它们放到容器上

为了避免组件X的多个实例之间出现问题,我为它们分配了一个id,从关于X.jsp的

long id = System.currentTimeMillis();
然后,在jsp中,我有一些类似于:

<div id='<%= id %>'>
</div>
我是不是疯了,currentTimeMillis正在返回重复的值?可能吗

可能吗

当然。首先,计算机很可能在一毫秒内做不止一件事。第二件事,这里参考的时钟通常不会有毫秒的粒度-您可能会发现它会在一段时间内给出相同的结果,然后跳跃10毫秒或15毫秒


您绝对不应该使用
currentTimeMillis
作为唯一ID。老实说,我也不建议使用
nanoTime
。为什么不直接使用
UUID
?这就是它的用途。

您的处理器是否可能在一毫秒内执行许多操作?对
long id = System.nanoTime();