今天在实际项目中遇到多线程同步锁记录一下;
第一步 新建SynchrogazerConfig.JAVA 文件
@Slf4j@Componentpublic 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关键字,封装完成 。
【SpringBoot 如何使用同步锁】第二步 简单测试调用
@Autowiredprivate SynchrogazerConfig sync;@ApiOperation("新增用户")@ApiImplicitParam(name = "userEntity", value = https://www.isolves.com/it/cxkf/jiagou/2022-01-24/"新增用户信息", 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();}
问题:这样的使用有什么问题吗?欢迎评论区交流学习!
推荐阅读
- php是不是彻底凉了?2021年主流使用的php框架有哪些?
- 如何写出自己第一篇10万+文章?
- SSH隧道详解与使用AutoSSH实现稳定的内网穿透
- |职场中如何学会说话?什么是会说话,学会这么说话让才能别人爱听
- 领导力|身为职场女性,如何改掉职场坏习惯?
- 如何选购玻璃砖
- 如何瘦腰瑜伽
- 男子健身如何计划比较好?
- 如何成为一名优秀的室内设计师
- 如何洗羽绒被是正确的羽绒被日常清洁方法