SpringBoot 接口并发限制(Semaphore)
可以使用 JMeter 辅助测试 https://blog.csdn.net/weixin_45014379/article/details/124190381
@RestController
@RequestMapping({"/Test"})
public class test {
Logger logger = LoggerFactory.getLogger(this.getClass());
// 使用 Semaphore 并发限制3个 超过阻塞
private final Semaphore permit = new Semaphore(3, true);
@GetMapping(value = {"/download"})
public String download(HttpServletRequest request) {
String result = "";
try {
// 获取令牌
logger.info("锁住 {}", Thread.currentThread().getName());
permit.acquire();
logger.info("下载 {}", Thread.currentThread().getName());
Thread.sleep(5000);
result = "Success";
} catch (Exception e) {
e.printStackTrace();
return e.getMessage();
} finally {
// 释放令牌
permit.release();
logger.info("释放 {}", Thread.currentThread().getName());
}
return
result ;
} }
参考:https://www.cnblogs.com/JCcccit/p/16868409.html