首页 > 其他分享 >用(Atomic原子类 使用)实现自增

用(Atomic原子类 使用)实现自增

时间:2022-11-11 15:12:48浏览次数:42  
标签:自增 String format 原子 substring atomicNum Atomic projectCode new

// 静态变量存储最大值
private static final AtomicInteger atomicNum = new AtomicInteger();
private static final Integer INIT_CODE_NUM = 0;
public String getCode(){
   //获取当前月日
   String date = new SimpleDateFormat("MMdd").format(new Date());
   String code = "XM"+date+"-";
   String format="";
   //从数据库筛选
   LambdaQueryWrapper<Project> wrapper = new LambdaQueryWrapper<>();
   wrapper.orderByDesc(Project::getCode);
   String projectCode = projectServiceImpl.list(wrapper).iterator().next().getCode();


   if(!ValidationUtil.isEmpty(projectCode)){
      //获取到当前code月日
      String proDate = projectCode.substring(projectCode.indexOf("M")+1,projectCode.length() - 5);
      if (proDate.equals(date)){
         String substring = projectCode.substring(projectCode.length() - 4);
         atomicNum.set(Integer.parseInt(substring));
      }else {
      //重置数量
         atomicNum.set(INIT_CODE_NUM);
      }
      //生成四位随机数自加1后并返回
      format = String.format("%04d", atomicNum.incrementAndGet());

   }
   return code+format;
}

标签:自增,String,format,原子,substring,atomicNum,Atomic,projectCode,new
From: https://www.cnblogs.com/LLW521/p/16880500.html

相关文章

  • 基于redis的分布式锁中的setnx+expire非原子操作问题
    基于redis的分布式锁,性能和稳定性都非常好.但是redis中setnx+expire是非原子操作,除了用LUA脚本保证实现原子操作,其实可以直接使用redis自带的set方法直接实现.setn......
  • Java并发编程一引用类型、升级类型原子类初使用加源码分析
    推荐:​​Java并发编程汇总​​Java并发编程一引用类型、升级类型原子类初使用加源码分析首先我们来看一看有哪些原子类。现在我们来看看该如何去使用这些引用类型、升级类......
  • C语言的自增自减运算符
    简单去理解,C语言的自增自减运算符的最终结果就是对自身进行加一和减一操作。但是当++、--作为后缀时则具有延后性,可能对程序有一些副作用,并且其的优先级也会对程序产生一......
  • 并发编程 - Atomic & Unsafe
    1.全面地走一遍Atomic包下面的原子类;2.CAS->原子比较与交换算法的bug-ABA问题;3.魔法类-Unsafe,ini->堆外内存Atomic1.atomic底层实现是基于无锁算法-cas;......
  • 学习笔记——自增长的键值问题、批处理
    2022-11-05 一、自增长的键值问题1、说明:将在数据库表单中添加数据的自增长的字段返回给用户2、使用方式:在预编译语句中,除了要传入sql语句外,还要传入一个参......
  • 自增与自减
    自增、自减都分别对应++、--操作,但是它们分别放在变量前和变量后的含义略有不同,实现的操作结果也不一样。比如:a++、++a、a--、--a。先从代码示例中了解它们之间的区别:pac......
  • java如何实现原子操作CAS
    在Java中可以通过锁和循环CAS的方式来实现原子操作。使用循环CAS实现原子操作JVM中的CAS操作正是利用了处理器提供的CMPXCHG指令实现的。自旋CAS实现的基本思路就是循环进行......
  • 关于 线程模型中经常使用的 __sync_fetch_and_add 原子操作的性能
    最近从kvell这篇论文中看到一些单机存储引擎的优秀设计,底层存储硬件性能在不远的未来可能不再是主要的性能瓶颈,反而高并发下的CPU可能是软件性能的主要限制。像BPS/AEP/Op......
  • 【原子样式实践】第12篇 一次搞定微信开发者工具的原子样式扩展
    原子样式虽好,在IDE中使用,有扩展辅助就更好。本文介绍如何开发微信开发者工具的原子样式扩展,支持原子样式的自动生成,支持特色功能组合样式,支持特色功能样式使用统计报告。1......
  • mysql双主架构解决自增冲突
    Mysql双主自增长冲突处理 多主互备和主从复制有一些区别,因为多主中都可以对服务器有写权限,所以设计到自增长重复问题 出现的问题(多主自增长ID重复) 1:首先我们通过A......