1.创建限制并发工具类
import lombok.extern.slf4j.Slf4j;/*** @author: wangsheng* @date: 2024/2/28 10:53*/
@Slf4j
public class LimitUtil {private int num = 0;private int max = 10;private static LimitUtil instance;private LimitUtil() {}public static LimitUtil instance() {if (null == instance) {synchronized (LimitUtil.class) {if (null == instance) {instance = new LimitUtil();}}}return instance;}public synchronized boolean limit() {if (num >= max) {return false;}num++;log.info("当前存在的并发数 {}", num);return true;}public synchronized void release() {num--;log.info("释放后的并发数 {}", num);}
}
2.方法中使用
public Result upload(FileUploadRecordSearcher searcher, HttpServletRequest request) {LimitUtil instance = LimitUtil.instance();String message;boolean flag;try {flag = instance.limit();if (flag) {message = fileUploadRecordService.upload(searcher, request);return Result.success(message);}} finally {instance.release();}return Result.error("当前上传文件并发数过高,请稍后再试");}