|
@@ -25,6 +25,7 @@ public class StatRunner {
|
|
|
* 休眠30s等待线程全部退出
|
|
|
*/
|
|
|
private static final int WAIT_TIME = 30;
|
|
|
+
|
|
|
/**
|
|
|
* dcm文件产生文件夹监听线程(池)
|
|
|
*/
|
|
@@ -60,6 +61,16 @@ public class StatRunner {
|
|
|
*/
|
|
|
private static ExecutorService remove2RetryPools = null;
|
|
|
|
|
|
+ /**
|
|
|
+ * 删除空文件夹的线程(池)
|
|
|
+ */
|
|
|
+ private static ExecutorService deleteEmptyDirPools = null;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除空重试文件夹的线程(池)
|
|
|
+ */
|
|
|
+ private static ExecutorService deleteEmptyRetryDirPools = null;
|
|
|
+
|
|
|
/**
|
|
|
* 上传遗留上传文件线程池(默认线程数 4 最小线程数 1)
|
|
|
*/
|
|
@@ -80,6 +91,7 @@ public class StatRunner {
|
|
|
*/
|
|
|
private static ExecutorService successPools = null;
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 队列集合数组
|
|
|
*/
|
|
@@ -97,8 +109,8 @@ public class StatRunner {
|
|
|
|
|
|
Configs.sysLog.info("call start runner count: " + poolsStartCount);
|
|
|
if(poolsStartCount == 0) {
|
|
|
- initQueueSet();
|
|
|
initPools();
|
|
|
+ initQueueSet();
|
|
|
startRunner();
|
|
|
poolsStartCount++;
|
|
|
return;
|
|
@@ -109,15 +121,15 @@ public class StatRunner {
|
|
|
// 销毁队列集合
|
|
|
destroyQueueSet();
|
|
|
|
|
|
- // 初始化队列集合
|
|
|
- initQueueSet();
|
|
|
-
|
|
|
// 初始化线程池
|
|
|
initPools();
|
|
|
|
|
|
// 等待runner销毁
|
|
|
waitRunningDestroy();
|
|
|
|
|
|
+ // 初始化队列集合
|
|
|
+ initQueueSet();
|
|
|
+
|
|
|
// 线程池启动标识设置为false
|
|
|
Configs.poolsStartingFlag = false;
|
|
|
|
|
@@ -139,19 +151,25 @@ public class StatRunner {
|
|
|
// 监听重试文件
|
|
|
startRetryMonitorRunner();
|
|
|
|
|
|
- //老文件加入老上传队列
|
|
|
+ // 老文件加入老上传队列
|
|
|
startAddHistoryFile2UploadRunner();
|
|
|
|
|
|
- //老重试文件加入老重试上传队列
|
|
|
+ // 老重试文件加入老重试上传队列
|
|
|
startAddHistoryRetryFile2UploadRunner();
|
|
|
|
|
|
- //新重试上传
|
|
|
+ // 删除空文件夹
|
|
|
+ startDeleteEmptyDirPools();
|
|
|
+
|
|
|
+ // 删除空重试文件夹
|
|
|
+ startDeleteEmptyRetryDirPools();
|
|
|
+
|
|
|
+ // 新重试上传
|
|
|
startCurrentRetryRunner();
|
|
|
|
|
|
- //重试移动文件
|
|
|
+ // 重试移动文件
|
|
|
startRemove2RetryRunner();
|
|
|
|
|
|
- //错误移动文件
|
|
|
+ // 错误移动文件
|
|
|
startErrorRunner();
|
|
|
|
|
|
// 成功移动
|
|
@@ -173,6 +191,20 @@ public class StatRunner {
|
|
|
startOldRetryRunner(Math.max(Configs.oldRetryPoolsLength, 1));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 启动删除重试文件夹的空目录
|
|
|
+ */
|
|
|
+ private static void startDeleteEmptyRetryDirPools() {
|
|
|
+ deleteEmptyRetryDirPools.execute(new BaseDeleteRunner(Configs.monitorRetryDir));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 启动删除监听文件夹的空目录
|
|
|
+ */
|
|
|
+ private static void startDeleteEmptyDirPools() {
|
|
|
+ deleteEmptyDirPools.execute(new BaseDeleteRunner(Configs.monitorDir));
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 启动遗留重试文件上传的线程池
|
|
|
* @param oldRetryPoolsLength 线程池数量
|
|
@@ -306,6 +338,12 @@ public class StatRunner {
|
|
|
// 错误移动文件线程池
|
|
|
initErrorPools();
|
|
|
|
|
|
+ // 删除空文件夹线程池
|
|
|
+ initDeleteEmptyDirPools();
|
|
|
+
|
|
|
+ // 删除空重试文件夹线程池
|
|
|
+ initDeleteEmptyRetryDirPools();
|
|
|
+
|
|
|
// 成功移动线程池
|
|
|
initSuccessPools(Math.max(Configs.successPoolsLength, 1));
|
|
|
|
|
@@ -319,6 +357,20 @@ public class StatRunner {
|
|
|
initOldRetryPools(Math.max(Configs.oldRetryPoolsLength, 1));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 初始化删除空文件夹的线程池
|
|
|
+ */
|
|
|
+ private static void initDeleteEmptyDirPools() {
|
|
|
+ deleteEmptyDirPools = generateSinglePools(deleteEmptyDirPools);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 初始化删除空重试文件夹的线程池
|
|
|
+ */
|
|
|
+ private static void initDeleteEmptyRetryDirPools() {
|
|
|
+ deleteEmptyRetryDirPools = generateSinglePools(deleteEmptyRetryDirPools);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 初始化遗留重试文件上传的线程池
|
|
|
* @param oldRetryPoolsLength 线程池数量
|