为了账号安全,请及时绑定邮箱和手机立即绑定

避免同时执行两次Spring @Async任务

避免同时执行两次Spring @Async任务

慕村225694 2021-05-14 19:16:14
我只是在Spring Framework中学习多线程,而且我不知道如何处理一种情况。我有一个长期的操作,我不希望用户等待它完成,我发现有一个@Async批注,该批注将方法标记为异步可执行。我的问题是,阻止该方法使同一公司的用户无法同时执行该方法的最佳方法是什么。准确地说,我想阻止甚至同一家公司的用户在同一时间执行analyzeData(...)和anlyzeStatistics(...)。我正在考虑将ConcurrentHashMap与用户公司作为键,并将布尔值作为值,并在执行操作之前对其进行检查。我想知道我是朝着正确的方向前进,还是Spring提供了其他更合适的选择。@Servicepublic class LongOperationService {   @Async   public void analyzeData(User user, List<String> data) {       boolean operationResult = performLongOperation(data);       if (opeartionResult) {           log.info("Long operation ended successfully")       } else {           log.error("Long operation failure")       }   }   @Async   public void analyzeStatistics(User user, List<String> statistics) {       ...   }   private void performLongOperation(List<String> data) {        // Just for demonstration        Thread.sleep(10000);        return true;   }}public class User {   String username;   String company;}
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 719 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信