diff options
Diffstat (limited to 'src/com/nms/server/service/ThreadService.java')
| -rw-r--r-- | src/com/nms/server/service/ThreadService.java | 68 |
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); + + } + + +} |
