修复线程池关闭问题
parent
3ef21e6756
commit
2ec1577033
|
@ -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";
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -197,7 +197,8 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>
|
|||
taskExportService.updateByExportCode(entity);
|
||||
});
|
||||
}
|
||||
taskManager.destroy();
|
||||
taskManager.closed();
|
||||
taskManager = null;
|
||||
return "执行成功";
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue