|
package com.ekexiu.portal.job;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.jfw.apt.annotation.Bean;
import org.jfw.util.bean.AfterBeanFactory;
import org.jfw.util.bean.BeanFactory;
@Bean
public class TaskJob implements AfterBeanFactory {
@Override
public void handle(BeanFactory bf) throws Throwable {
TaskJobEntry tje = (TaskJobEntry) bf.getBean("com_ekexiu_portal_job_TaskJobEntry");
long delayTime = tje.getDelayTime();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date date = sdf.parse(tje.getTaskTime());
long task = date.getTime();
long taskTime = task - System.currentTimeMillis();
taskTime = taskTime > 0 ? taskTime : delayTime + taskTime;
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
// 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
// service.scheduleAtFixedRate(tje, tje.getStartTime(), tje.getIntervalTime(), TimeUnit.SECONDS);
service.scheduleAtFixedRate(tje, taskTime, delayTime, TimeUnit.MILLISECONDS);
}
}
|