可以用System.nanoTime()做主键ID吗?

单机服务,主键ID为长整型,需要做到不能连续的,比如自增就不能实现因为是连续的。
我想到了用System.nanoTime()做ID,因为没有实践过,不知道会不会出现ID重复?
问题是: 1 这样可以实现吗?

    2 如果有更好的办法,那是什么了?
阅读 4.9k
2 个回答

不行。nanoTime使用的是一个不确定的起始时间,在重启动以后很可能会有重叠。

可使用UUID。

墨菲定律只要有可能出错,就一定会出错,不管它的概率有多小。

不能连续出现,单机服务。举个例子,假如你使用 自增ID 在加 System.nanoTime() 组成一个 long 类型数字(是字符串形式连接,而不是加法)。这个ID就不会重复了,因为 自增ID 一定不会重复。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题