写了一个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个进程。
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个进程。
解决方案 »
- (Java.FTP问题)有个需求啊要求用户发帖子的同时,如果帖子有附件
- 很简单的一个窗口 老是编译不通过 大哥帮我看下 菜鸟出学
- JDK的问题,大家帮帮我吧
- 用java如何获取指定汉字的拼音索引字母??
- 高手给点建议把
- 如何在文件中查找一个字符串?再线等待。
- 请教FileOutputStream类问题!
- 关于applet的问题,请指教.
- 菜鸟问题,在jbuilder中的编程小问题
- ▁▂▃▄▅▆▇█▉ 各位大虾:由谁知道或用过Enhydra4.0?能提供一些操作或使用信息吗?急用!!!!
- MyEclipse出现错误,不能运行java程序,运行出来是由tomcat网页显示出来
- 大神给,写个java递归题
用你这个方法, 20个线程生成100w个都没见重复
嗯 经检查是因为并发程序使用了该类的同一个对象,而保存这个ID的值又是一个全局变量,所以出现重复,上面这个方法是不会重复的:)
解决方法:不用全局变量保存这个ID值或者保证所属对象每次都单独生成。