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("当前上传文件并发数过高,请稍后再试");
}