多线程并发不重复订单编号生成

更新时间:2023-06-16 06:13:50 阅读: 评论:0

多线程并发不重复订单编号⽣成
不重复订单号⽣成
参考:
单机⽣成
/** 订单号⽣成(NEW) **/
private static final AtomicInteger SEQ =new AtomicInteger(1000);
private static final DateTimeFormatter DF_FMT_PREFIX = DateTimeFormatter.ofPattern("yyMMddHHmmssSS"); private static ZoneId ZONE_ID = ZoneId.of("Asia/Shanghai");
public static String generateOrderNo(){
LocalDateTime dataTime = w(ZONE_ID);
if(SEQ.intValue()>9990){
小拜年词
}立秋的习俗
return  dataTime.format(DF_FMT_PREFIX)+AndIncrement();
}
/** 测试 **/
public static void main(String[] args){
List<String> orderNos = Collections.synchronizedList(new ArrayList<String>());
IntStream.range(0,8000).parallel().forEach(i->{
orderNos.add(generateOrderNo());
});兔子肉怎么做好吃又简单
List<String> filterOrderNos = orderNos.stream().distinct().List());
System.out.println("⽣成订单数:"+orderNos.size());
System.out.println("过滤重复后订单数:"+filterOrderNos.size());
System.out.println("重复订单数:"+(orderNos.size()-filterOrderNos.size()));
}
98年属什么的/**
测试结果:
⽣成订单数:8000
过滤重复后订单数:8000
重复订单数:0
**/
集群⽣成
import s.lang3.RandomUtils;
import java.InetAddress;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import urrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class OrderGen2Test {
/** 订单号⽣成 **/
private static ZoneId ZONE_ID = ZoneId.of("Asia/Shanghai");
private static final AtomicInteger SEQ =new AtomicInteger(1000);
private static final DateTimeFormatter DF_FMT_PREFIX = DateTimeFormatter.ofPattern("yyMMddHHmmssSS");
private static final DateTimeFormatter DF_FMT_PREFIX = DateTimeFormatter.ofPattern("yyMMddHHmmssSS"); public static String generateOrderNo(){
LocalDateTime dataTime = w(ZONE_ID);
if(SEQ.intValue()>9990){
}
return  dataTime.format(DF_FMT_PREFIX)+getLocalIpSuffix()+AndIncrement();
}
private volatile static String IP_SUFFIX = null;
private static String getLocalIpSuffix (){
if(null != IP_SUFFIX){
return IP_SUFFIX;
}幼儿园教研工作计划
try{
synchronized(OrderGen2Test.class){
if(null != IP_SUFFIX){
return IP_SUFFIX;
}
InetAddress addr = LocalHost();
//  172.17.0.4  172.17.0.199 ,
String hostAddress = HostAddress();
if(null != hostAddress && hostAddress.length()>4){
String ipSuffix = im().split("\\.")[3];
if(ipSuffix.length()==2){
IP_SUFFIX = ipSuffix;
return IP_SUFFIX;
}
ipSuffix ="0"+ ipSuffix;
IP_SUFFIX = ipSuffix.substring(ipSuffix.length()-2);
return IP_SUFFIX;
}
IP_SUFFIX = Int(10,20)+"";
return IP_SUFFIX;
}
}catch(Exception e){
System.out.println("获取IP失败:"+e.getMessage());
IP_SUFFIX =  Int(10,20)+"";
return IP_SUFFIX;
}
}
/** 测试 **/
public static void main(String[] args){
List<String> orderNos = Collections.synchronizedList(new ArrayList<String>());
IntStream.range(0,8000).parallel().forEach(i->{
orderNos.add(generateOrderNo());
});
List<String> filterOrderNos = orderNos.stream().distinct().List());
System.out.println("订单样例:"+ (22));
System.out.println("⽣成订单数:"+orderNos.size());
System.out.println("过滤重复后订单数:"+filterOrderNos.size());
早逢春
System.out.println("重复订单数:"+(orderNos.size()-filterOrderNos.size()));
}
}
饽论/**
订单样例:20082115575546011022
⽣成订单数:8000
过滤重复后订单数:8000
重复订单数:0
豌豆怎么种**/

本文发布于:2023-06-16 06:13:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/965804.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:订单   计划   好吃   过滤   结果   获取   教研
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图