假设我有一个进程每秒创建1000个实体。对于这些实体中的每一个,我都会调用setter方法:
newEntity.setDate(new Date());
1) 两个实体是否可能接收相同的日期?或者可以安全地假定我会得到日期字段的唯一标识符效果?
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()
读取系统时钟 - 可以在同一毫秒内进行多次读取。同步不会改变这一点(除了使完成操作所需的时间略微更长)。不要使用日期作为唯一标识符。 - Greg Kopff