springboot处理并发接口,简单实用
2023-09-11 14:18:41 时间
public int updateTsakSuatusByTaskIdAuthorId(Integer authorId, Integer taskCode, Integer status) { TaskInfoDetailVo taskDetail = null; TaskAuthorVo taskAuthor = null; //处理并发事件 定义资源的总数量 Semaphore semaphore = new Semaphore(1); //获取可用资源数 int availablePermits = semaphore.availablePermits(); if (availablePermits > 0) { try { //请求占用一个资源 semaphore.acquire(1); taskDetail = taskSR.getTaskDetail(taskCode); taskAuthor = taskSR.getCount(authorId, taskCode); } catch (Exception e) { log.error("修改抢单状态之前查询状态判断异常", e.getMessage()); } finally { //释放一个资源 semaphore.release(1); } if (taskDetail == null) { return -1; } if (null == taskAuthor) { return -2; } if (taskDetail.getStatus() != (int) EnumTaskStatus.DCP.getKey() && taskAuthor.status != (int) EnumTaskAuthorStauts.TASK0.getKey()) { return -3; } //0作者待接受,1作者待审核,2作者已拒绝,3已选中,4被拒绝, int updateStatus = updateTaskSR.updateTsakSuatusByTaskIdAuthorId(authorId, taskCode, status, String.valueOf(new Date())); return updateStatus; } else { System.out.println("*********资源已被占用,稍后再试***********"); return 0; } }
相关文章
- 补习系列(9)-springboot 定时器,你用对了吗
- SpringBoot入门之基于Druid配置Mybatis多数据源
- SpringBoot Cglib代理不生效
- SpringBoot ( 七 ) :springboot + mybatis 多数据源最简解决方案
- SpringBoot应用部署到Tomcat中无法启动问题
- SpringBoot 如何生成接口文档
- springboot 远程拉取配置中心配置
- mybatis如何根据mapper接口生成其实现类(springboot)
- SpringBoot使用jasypt加解密密码
- springboot前后端分离后权限原理浅谈
- Java笔记:SpringBoot开发常用技术整合
- Springboot使用PlatformTransactionManager接口的事务处理
- SpringBoot中使用Redis
- SpringBoot实例②springboot+jdbcTemplate小例子实现增删查改
- 基于Java+SpringBoot+SpringCloud+Vue前后端分离医院管理系统设计与实现
- Springboot项目如何设计接口中敏感数据的脱敏展示?
- Springboot怎么实现restfult风格Api接口
- 【工作流Activiti7】7、Activiti7+SpringBoot
- 【Spring Boot】SpringBoot 如何保证接口安全?老鸟们都是这么玩的!