package com.ffcs.oss.service.imp;import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;import javax.annotation.Resource;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.context.annotation.PropertySource;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;import com.ffcs.oss.mapper.inms.FaultStateMapper;
import com.ffcs.oss.service.FaultStateService;@Service
@EnableScheduling
public class FaultStateServiceImp implements FaultStateService  {
private static Logger log = LogManager.getLogger(FaultStateServiceImp.class);

@Resource
private FaultStateMapper faultStateMapper;
    private boolean iStarFaultSheetStateThread = false;
    
    
@Scheduled(fixedRateString = "${app.schedule.dealstatetime}")
public void dealState() {

try { List<Map<String, Object>> resultList = faultStateMapper.findState();
 System.out.println(resultList);
if (resultList != null && !resultList.isEmpty()) {

Iterator it = resultList.iterator();
while (it.hasNext()) {
int alarmid = 0;
String ocname = "";
int recStatus = -100;
boolean rec = false;

try {
Map map = (Map) it.next();
ocname = (String) map.get("OCNAME");
alarmid = Integer.parseInt((String) map.get("ALARMOBJECTID"));
recStatus = Integer.parseInt((String) map.get("RECSTATUS"));
String respDesc = (String) map.get("RESPDESC");
if ((respDesc != null) && (respDesc.length() > 700)) {
respDesc = respDesc.substring(respDesc.length() - 700);
map.put("RESPDESC", respDesc);
}
try{
faultStateMapper.updateState(map);
rec = true;
}catch(Exception e){

throw new Exception(e.getMessage() + "\n" + e);
}

if (rec) {
log.info("(" + ocname + "," + alarmid + ",recstatus=" + recStatus + ")处理状态成功!");

} else {
log.error("(" + ocname + "," + alarmid + ",recstatus=" + recStatus + ")处理状态失败!");

} } catch (Exception e) { log.error("(" + ocname + "," + alarmid + ",recstatus=" + recStatus + ")处理状态异常!", e);

}
} } } catch (Exception e) { try {
Thread.sleep(60000);
} catch (InterruptedException localInterruptedException) {
}
} }}
问题描述:
 dealState() 是由@Scheduled定时调用的,怎么实现条件控制调用,就是怎么控制定时任务的终止,程序启动后,定时任务自动触发,进入定时执行dealState()方法,要怎么实现满足某个条件后再去执行定时任务。