写一个异步接口,前端没有设置间隔时间,一直刷请求,由于后台每次请求去redis查询是否有内容,如果没有,单独使用一个线程去查询数据;
因为这里,前端一直刷请求,导致后端的线程池一直在提交任务,撑爆了线程池,阻塞队列也满了,后续请求就废掉了;
使用 锁 暂时解决,还需深入了解下;
private final Lock lock = new ReentrantLock();
public void test() {
try {
if (lock.tryLock(10L, TimeUnit.SECONDS)) {
try {
xxxxxx
} finally {
lock.unlock();
}
} else {
// 获取不到锁
// 处理其他
return ;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}