修复线程池关闭问题

master
面包骑士 2024-09-08 12:01:26 +08:00
parent 3ef21e6756
commit 2ec1577033
2 changed files with 17 additions and 4 deletions

View File

@ -104,12 +104,22 @@ public final class TaskManager {
workThrads[i].stopWorker();
workThrads[i] = null;
}
endTime = System.currentTimeMillis();
log.info("线程池关闭,工作时长:{}ms", endTime - startTime);
taskManager=null;
taskQueue.clear();// 清空任务队列
}
// 任务完成后,统计线程池的运行情况
public void closed() {
while (!getIsRunning()) {// 如果还有任务没执行完成,就先睡会吧
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
log.info("任务完成,线程状态: {}",this.toString());
}
// 返回工作线程的个数
public int getWorkThreadNumber() {
return workerNum;
@ -136,8 +146,10 @@ public final class TaskManager {
// 覆盖toString方法返回线程池信息工作线程个数和已完成任务个数
@Override
public String toString() {
endTime = System.currentTimeMillis();
return "工作任务数:" + workerNum + ",已完成任务数:"
+ finishedTask + ",等待任务数:" + getWaitTasknumber();
+ finishedTask + ",等待任务数:" + getWaitTasknumber()
+ "线程池作时长:"+(endTime - startTime)+"ms";
}
/**

View File

@ -197,7 +197,8 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>
taskExportService.updateByExportCode(entity);
});
}
taskManager.destroy();
taskManager.closed();
taskManager = null;
return "执行成功";
}