summaryrefslogtreecommitdiff
path: root/src/com/nms/server/service/ThreadService.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/nms/server/service/ThreadService.java')
-rw-r--r--src/com/nms/server/service/ThreadService.java68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/com/nms/server/service/ThreadService.java b/src/com/nms/server/service/ThreadService.java
new file mode 100644
index 0000000..89e9bf0
--- /dev/null
+++ b/src/com/nms/server/service/ThreadService.java
@@ -0,0 +1,68 @@
+package com.nms.server.service;
+
+import java.util.Date;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+
+import com.nms.server.bean.SetInfo;
+import com.nms.server.common.Common;
+import com.nms.server.common.Constants;
+import com.nms.server.thread.monitor.MonitorManagerThread;
+
+public class ThreadService{
+ private static Logger logger = Logger.getLogger(ThreadService.class);
+ public ThreadService(){
+
+ }
+
+ /**
+ * 更新主动监测线程操作
+ * 关闭旧线程,创建新线程
+ * @time Sep 12, 2012-4:44:03 PM
+ * @param nm
+ * @param info
+ */
+ public void updateThread(SetInfo info) {
+
+ //- 计算启动后第一次检测时间 默认即时启动
+ long initialDelay = Constants.HANDSHANK_DELAY_TIME;
+ if(info.getPlanCheckTime()!=null){
+ initialDelay = info.getPlanCheckTime().longValue() - (new Date().getTime());
+ initialDelay = initialDelay > 0l ? initialDelay : 0l;
+ }
+
+ //- 设置名称
+ String processIden = StringUtils.isEmpty(info.getProcessIden())?"":info.getProcessIden();
+
+ //-线程名称
+ String runnableName = info.getCheckTypeName()+"_"+processIden;
+
+ //- 撤销旧监测线程
+ Common.cancelRunnableAtOnce(runnableName); //撤销 旧任务
+
+ //- 监测设置状态无效 结束操作--对于变更,如果修改为无效,则不再启动新监测
+ if(StringUtils.isEmpty(info.getCheckState()) || "0".equals(info.getCheckState())){//0无效;1有效
+ return;
+ }
+
+ //- 监测方式 非主动 结束操作--为了严谨
+ if(StringUtils.isEmpty(info.getCheckWay()) || "1".equals(info.getCheckWay())){//0主动,1被动
+ return;
+ }
+ logger.info("主动监测设置启动 "+runnableName);
+
+ //- 创建线程
+ Runnable runnable = new MonitorManagerThread(runnableName,info);
+
+ //- 添加到 定时线程池
+ ScheduledFuture<?> future = Common.scheduled.scheduleAtFixedRate(runnable, initialDelay/1000, info.getCheckGap()*60, TimeUnit.SECONDS);
+ //- 注册线程
+ Common.registRunnable(runnableName, future);
+
+ }
+
+
+}