iteye_7807 2010-07-23 10:11
浏览 366
已采纳

如何按照一定规则自动生成序列号码

要实现按照一定规则自动生成序列号,比如:666660000001,666660000002,666660000003等,这个字段不是表的主键,算是属于业务对应得一个字段,开始考虑直接查数据库,每次自动加一,但这样在并发时就会有问题;若加上synchronized载这段代码上,但在并发大的时候会不会对表产生死锁呢。不知道大家有没有更好的办法,分享一下吧。谢谢啦。

  • 写回答

4条回答 默认 最新

  • weixin_42388091 2010-07-29 08:27
    关注

    java.util.concurrent.atomic.AtomicInteger

    int getAndIncrement()
    以原子方式将当前值加 1。

    其实这东西就是一个线程安全的count++
    纯属计数用的 它可以保证你每次的到得值是一个递增不重复的值

    如果你要保证入库正确的话 当程序结束运行的时候 这个值需要持久化 比如保存至文件 然后程序启动时再读入 这样就保证它永远最大

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题