修复线程池关闭问题
parent
3ef21e6756
commit
2ec1577033
|
@ -104,12 +104,22 @@ public final class TaskManager {
|
||||||
workThrads[i].stopWorker();
|
workThrads[i].stopWorker();
|
||||||
workThrads[i] = null;
|
workThrads[i] = null;
|
||||||
}
|
}
|
||||||
endTime = System.currentTimeMillis();
|
|
||||||
log.info("线程池关闭,工作时长:{}ms", endTime - startTime);
|
|
||||||
taskManager=null;
|
taskManager=null;
|
||||||
taskQueue.clear();// 清空任务队列
|
taskQueue.clear();// 清空任务队列
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 任务完成后,统计线程池的运行情况
|
||||||
|
public void closed() {
|
||||||
|
while (!getIsRunning()) {// 如果还有任务没执行完成,就先睡会吧
|
||||||
|
try {
|
||||||
|
sleep(500);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.info("任务完成,线程状态: {}",this.toString());
|
||||||
|
}
|
||||||
|
|
||||||
// 返回工作线程的个数
|
// 返回工作线程的个数
|
||||||
public int getWorkThreadNumber() {
|
public int getWorkThreadNumber() {
|
||||||
return workerNum;
|
return workerNum;
|
||||||
|
@ -136,8 +146,10 @@ public final class TaskManager {
|
||||||
// 覆盖toString方法,返回线程池信息:工作线程个数和已完成任务个数
|
// 覆盖toString方法,返回线程池信息:工作线程个数和已完成任务个数
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
endTime = System.currentTimeMillis();
|
||||||
return "工作任务数:" + workerNum + ",已完成任务数:"
|
return "工作任务数:" + workerNum + ",已完成任务数:"
|
||||||
+ finishedTask + ",等待任务数:" + getWaitTasknumber();
|
+ finishedTask + ",等待任务数:" + getWaitTasknumber()
|
||||||
|
+ "线程池作时长:"+(endTime - startTime)+"ms";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -197,7 +197,8 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>
|
||||||
taskExportService.updateByExportCode(entity);
|
taskExportService.updateByExportCode(entity);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
taskManager.destroy();
|
taskManager.closed();
|
||||||
|
taskManager = null;
|
||||||
return "执行成功";
|
return "执行成功";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue