您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

SpringBoot 如何使用同步锁

时间:2022-01-24 12:17:57  来源:  作者:率真执着的明月

今天在实际项目中遇到多线程同步锁记录一下;

第一步 新建SynchrogazerConfig.JAVA 文件

@Slf4j
@Component
public class SynchrogazerConfig {

    Map<String, Object> map = new ConcurrentHashMap<>();


    public void exec(String key, Runnable runnable) {
        Object o = map.computeIfAbsent(key, k -> new Object());
        synchronized (o) {
            try {
                runnable.run();
            } catch (Exception e) {
                log.error("新线程启动失败:{}", e.getMessage());
            } finally {
                map.remove(key);
            }
        }

    }
}

这样,基于ConcurrentHashMap线程安全,通过synchronized关键字,封装完成。

第二步 简单测试调用

    @Autowired
    private SynchrogazerConfig sync;
    
    @ApiOperation("新增用户")
    @ApiImplicitParam(name = "userEntity", value = "新增用户信息", dataType = "UserEntity")
    @PostMApping("/save")
    public AjaxResult save(UserEntity user) {
        if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) {
            return AjaxResult.error("用户ID不能为空");
        }
        sync.exec(String.valueOf(user.getUserId()),()->{
            users.put(user.getUserId(), user);
        });
        return AjaxResult.success();
    }

问题:这样的使用有什么问题吗?欢迎评论区交流学习!



Tags:SpringBoot   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
总览 使用flowable自带的flowable-ui制作流程图 使用springboot开发流程使用的接口完成流程的业务功能一、flowable-ui部署运行flowable-6.6.0 运行 官方demo参考文档:https:...【详细内容】
2022-01-24  Tags: SpringBoot  点击:(4)  评论:(0)  加入收藏
今天在实际项目中遇到多线程同步锁记录一下;第一步 新建SynchrogazerConfig.java 文件@Slf4j@Componentpublic class SynchrogazerConfig { Map<String, Object> map = ne...【详细内容】
2022-01-24  Tags: SpringBoot  点击:(6)  评论:(0)  加入收藏
微信支付API-V3和V2的区别微信支付API-V3和之前V2版本最大的区别,应该就是加密方式的改变了。新版的支付接口,全部使用是SSL双向加密。就是指微信服务器端、商户端各自都有一...【详细内容】
2021-12-29  Tags: SpringBoot  点击:(22)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  Tags: SpringBoot  点击:(54)  评论:(0)  加入收藏
前言项目中的配置文件会有密码的存在,例如数据库的密码、邮箱的密码、FTP的密码等。配置的密码以明文的方式暴露,并不是一种安全的方式,特别是大型项目的生产环境中,因为配置文...【详细内容】
2021-11-17  Tags: SpringBoot  点击:(37)  评论:(0)  加入收藏
SpringBoot开发的物联网通信平台系统项目功能模块 功能 说明 MQTT 1.SSL支持 2.集群化部署时暂不支持retain&will类型消 UDP ...【详细内容】
2021-11-05  Tags: SpringBoot  点击:(75)  评论:(0)  加入收藏
1. 介绍1.1 介绍今天开始我们来学习Java操作MySQL数据库的技巧,Java操作MySQL是借助JdbcTemplate这个对象来实现的。JdbcTemplate是一个多数据库集中解决方案,而我们今天只讲...【详细内容】
2021-11-05  Tags: SpringBoot  点击:(39)  评论:(0)  加入收藏
SpringBoot中的Controller注册本篇将会以Servlet为切入点,通过源码来看web容器中的Controller是如何注册到HandlerMapping中。请求来了之后,web容器是如何根据请求路径找到对...【详细内容】
2021-11-04  Tags: SpringBoot  点击:(78)  评论:(0)  加入收藏
环境:Springboot2.4.11环境配置接下来的演示都是基于如下接口进行。@RestController@RequestMapping("/exceptions")public class ExceptionsController { @GetMapping(...【详细内容】
2021-10-11  Tags: SpringBoot  点击:(51)  评论:(0)  加入收藏
SpringBoot项目默认使用logback, 已经内置了 logback 的相关jar包,会从resource包下查找logback.xml, logback 文件格式范本 可直接复制使用,有控制台 info.log error.log三个...【详细内容】
2021-10-09  Tags: SpringBoot  点击:(62)  评论:(0)  加入收藏
▌简易百科推荐
DDD这几年越来越火,资料也很多,大部分的资料都偏向于理论介绍,有给出的代码与传统MVC的三层架构差异较大,再加上大量的新概念很容易让初学者望而却步。本文从MVC架构角度来讲解...【详细内容】
2022-01-24  杨同学编程    Tags:架构   点击:(7)  评论:(0)  加入收藏
总览 使用flowable自带的flowable-ui制作流程图 使用springboot开发流程使用的接口完成流程的业务功能一、flowable-ui部署运行flowable-6.6.0 运行 官方demo参考文档:https:...【详细内容】
2022-01-24  实战Java    Tags:SpringBoot   点击:(4)  评论:(0)  加入收藏
今天在实际项目中遇到多线程同步锁记录一下;第一步 新建SynchrogazerConfig.java 文件@Slf4j@Componentpublic class SynchrogazerConfig { Map<String, Object> map = ne...【详细内容】
2022-01-24  率真执着的明月    Tags:SpringBoot   点击:(6)  评论:(0)  加入收藏
本文主要介绍mybatis-plus这款插件,针对springboot用户。包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。本文项目代码gitee地址: gitee.c...【详细内容】
2022-01-21  Java架构海子    Tags:mybatis-plus   点击:(9)  评论:(0)  加入收藏
一、前言1.1、关于枚举类① 枚举是JDK1.5中的新功能,我们可以使用枚举很好的去描述一些业务场景:一年有四季、人类有男女...② 同样我们在业务层面会有很多,比如状态属性、分...【详细内容】
2022-01-20  晓掌柜丶韶华    Tags:MybatisPlus   点击:(7)  评论:(0)  加入收藏
1Kubernetes 集群架构图 2Openshift or Kubernetes 集群架构图 3常见的 CI/CD 架构图1. Gitlab Webhook + Jenkins SharedLibraries/Kubernetes + SonarScanner Maven Plugi...【详细内容】
2022-01-18  IT人张飞洪    Tags:Kubernetes   点击:(9)  评论:(0)  加入收藏
目前线上很多SAAS系统,但是SAAS系统必须支持多租户,对于多租户有多种实现方式,当然不同的实现方式的成本也是不同的。这里我介绍一种最节省成本的实现方式,通过数据记录增加租户...【详细内容】
2022-01-10  萧声飞扬    Tags:Spring boot   点击:(17)  评论:(0)  加入收藏
一、微服务基础1.什么是SpringCloud?SpringCloud官网: https://spring.io/projects/spring-cloud(个人建议是用谷歌浏览器访问官网打开中文翻译粗略把官网读一遍)个人理解:以前的...【详细内容】
2022-01-07  老炮说Java    Tags:架构   点击:(21)  评论:(0)  加入收藏
前言前一段时间,刚刚接手一个项目,项目中看到使用的spring的事件监听机制,加上之前自己看spring源码的时候也对spring listener 有点影像,于是就重新追一追源码,理一理spring 事...【详细内容】
2022-01-06  NeverMore    Tags:spring   点击:(29)  评论:(0)  加入收藏
byview 是一个自己开发的,用于引导vue组件直接工作在浏览器中而不需要脚手架的一个微框架(启动引擎),使得vue在浏览器中开发体验跟vue-cli相似。无需独立编译资源文件,修改立...【详细内容】
2021-12-30  带码攻城狮    Tags:Vue3   点击:(31)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条