【发布时间】:2013-08-01 00:11:00
【问题描述】:
想象一下,我有一个每秒创建 1000 个实体的进程。 对于这些实体中的每一个,我都称其为 setter:
newEntity.setDate(new Date());
1) 2 个实体是否有可能收到相同的日期?或者可以安全地假设我确实获得了日期字段的唯一标识符效果?
2) 如果问题 #1 的答案是:“是” - 让我们做一个小调整: 让我们创建一个函数:
public static synchronized Date getDate() {
return new Date();
}
现在可以用了吗?
newEntity.setDate(getDate());
3) 怎么样
System.nanoTime()?
编辑 4) 怎么样:
public static synchronized Date getDate() {
Thread.Sleep(1000);
return new Date();
}
谢谢。
【问题讨论】:
-
new Date()读取系统时钟 - 可以在同一毫秒内进行多次读取。同步不会改变这一点(除了使完成操作所需的时间稍微长一点)。不要使用日期作为唯一标识符。
标签: java date datetime unique uniqueidentifier