mirror of
https://gitee.com/dromara/sms4j.git
synced 2025-12-06 08:58:38 +08:00
!188 【修复】发送oa消息通知,线程池资源在while循环中未能释放,导致服务器cpu占用过高
Merge pull request !188 from 东风/oa-fix-high-cpu
This commit is contained in:
commit
d58f2d0eaf
@ -2,6 +2,7 @@ package org.dromara.oa.core.provider.service;
|
|||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.oa.api.OaCallBack;
|
import org.dromara.oa.api.OaCallBack;
|
||||||
import org.dromara.oa.api.OaSender;
|
import org.dromara.oa.api.OaSender;
|
||||||
import org.dromara.oa.comm.config.OaSupplierConfig;
|
import org.dromara.oa.comm.config.OaSupplierConfig;
|
||||||
@ -19,6 +20,7 @@ import java.util.concurrent.PriorityBlockingQueue;
|
|||||||
* @author dongfeng
|
* @author dongfeng
|
||||||
* 2023-10-22 21:03
|
* 2023-10-22 21:03
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
public abstract class AbstractOaBlend<C extends OaSupplierConfig> implements OaSender {
|
public abstract class AbstractOaBlend<C extends OaSupplierConfig> implements OaSender {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@ -57,12 +59,16 @@ public abstract class AbstractOaBlend<C extends OaSupplierConfig> implements OaS
|
|||||||
pool.execute(() -> {
|
pool.execute(() -> {
|
||||||
Thread.currentThread().setName("oa-priorityQueueMap-thread");
|
Thread.currentThread().setName("oa-priorityQueueMap-thread");
|
||||||
while (!Thread.currentThread().isInterrupted()) {
|
while (!Thread.currentThread().isInterrupted()) {
|
||||||
Request request = priorityQueueMap.poll();
|
try{
|
||||||
if (!Objects.isNull(request)) {
|
Request request = priorityQueueMap.take() ;
|
||||||
pool.execute(() -> {
|
pool.execute(() -> {
|
||||||
System.out.println("优先级为"+request.getPriority()+"已发送");
|
log.info("优先级为"+request.getPriority()+"已发送");
|
||||||
sender(request, request.getMessageType());
|
sender(request, request.getMessageType());
|
||||||
});
|
});
|
||||||
|
}catch (InterruptedException e){
|
||||||
|
log.info("[Dispatcher]-priorityQueueMap-task-dispatcher has been interrupt to close.");
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user