UUID在高并发下出现重复??

matrix1984 2013-04-22 02:42:57
写了一个Webservice服务,其中产生主键用到了如下方法,在本地用soapUI模拟多线程,出现主键重复:
public static String generateSequenceID() throws Exception {
String dateTime = DateOper.date2Str(new Date(), "yyyyMMddhhmmss");
String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
String ranEight = String.format("%08d", new Random().nextInt(99999999));
return dateTime + uuid + ranEight;
}


是什么问题导致的?是因为本地导致UUID在高并发下会重复吗?测试时最多允许10个进程。
...全文
13772 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
matrix1984 2013-04-22
  • 打赏
  • 举报
回复
引用 楼主 matrix1984 的回复:
写了一个Webservice服务,其中产生主键用到了如下方法,在本地用soapUI模拟多线程,出现主键重复: Java code?123456public static String generateSequenceID() throws Exception { String dateTime = DateOper.date2Str(new Date(),……
嗯 经检查是因为并发程序使用了该类的同一个对象,而保存这个ID的值又是一个全局变量,所以出现重复,上面这个方法是不会重复的:) 解决方法:不用全局变量保存这个ID值或者保证所属对象每次都单独生成。
albertshaw 2013-04-22
  • 打赏
  • 举报
回复
UUID是不包含检查重复的, 但是这样随机都重复了是因为运气么? 用你这个方法, 20个线程生成100w个都没见重复
本课程是《Flowable流程入门课程》的后续高级课程。在学习本课程前,应先学习入门课程,以掌握相关基础知识。高级课程着重讲解Flowable工作流的高级概念、复杂理论和实战应用。课程内容包括流程管理思想、技术与标准、工作流的控制模式和资源模式;Flowable数据库表及变量;与Spring、Spring Boot的集成;BPMN 2.0主要类图;Flowable高级服务如JAVA服务任务、脚本任务、Web Service任务、外部工作者任务、多实例任务、补偿处理程序、子流程和调用活动等;Flowable事件侦听器、执行侦听器和任务侦听器;Flowable历史和REST API;Flowable事务、并发性、身份管理及LDAP集成;Flowable高级主题如流程实例迁移、异步执行器的设计与配置、用于高并发UUID ID生成器、多租户、高级流程引擎配置、执行自定义SQL和实验性流程调试器等;Flowable Eclipse设计器特性及定制;Flowable 事件注册;Flowable相关标准和规范如ISO8601标准和cron等。本课程对Flowable官方文档进行了彻底梳理和融汇贯通,并结合实践,形象生动、系统全面、简单易懂地呈现给大家,让大家从开源软件文档冗长耗时、英文晦涩难懂、概念理解困难、知识点分散等困境中解脱出来,从而能快速地将Flowable具有的高级特性应用到项目的高级需求和复杂实践中去。课程特色:案例和代码驱动、基础概念与经典实战相结合、知识环节融会贯通、关联知识平滑拓展、概念和原理展示形象生动。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧