我正在开发一个AEM项目,我有一个组件X.沿着这个组件,我有另一个是X的容器。所以,我可以拖动X实例并将它们放到容器上。
为了避免组件X的多个实例之间出现问题,我为它们分配了一个id,从关于X.jsp调用这个Java函数:
long id = System.currentTimeMillis();
然后,在jsp中,我有类似的东西:
<div id='<%= id %>'>
</div>
令我惊讶的是,在使用Chrome Inspector检查DOM时,我在html结构中发现了几个重复的ID。当然,这引起了很多问题。
我能够通过调用:
来解决这个问题long id = System.nanoTime();
我是否疯了,currentTimeMillis正在返回重复值?这可能吗?
答案 0 :(得分:3)
这可能吗?
绝对。首先,计算机很可能在一毫秒内完成多项工作。第二件事,这里咨询的时钟通常不会有毫秒的粒度 - 你可能会发现它会在一段时间内得到相同的结果,然后跳跃10毫秒或15毫秒。
您绝对应该不使用currentTimeMillis
获取唯一ID。说实话,我也不建议使用nanoTime
。为什么不使用UUID
?这就是它的用途。