|
|
|
|
4
|
import java.text.ParseException;
|
4
|
import java.text.ParseException;
|
5
|
import java.text.SimpleDateFormat;
|
5
|
import java.text.SimpleDateFormat;
|
6
|
import java.util.Date;
|
6
|
import java.util.Date;
|
7
|
import java.util.concurrent.Executors;
|
|
|
8
|
import java.util.concurrent.ScheduledExecutorService;
|
7
|
import java.util.concurrent.ScheduledExecutorService;
|
9
|
import java.util.concurrent.TimeUnit;
|
8
|
import java.util.concurrent.TimeUnit;
|
10
|
|
9
|
|
11
|
import org.jfw.apt.annotation.Bean;
|
10
|
import org.jfw.apt.annotation.Bean;
|
12
|
import org.jfw.util.bean.AfterBeanFactory;
|
11
|
import org.jfw.util.bean.AfterBeanFactory;
|
13
|
import org.jfw.util.bean.BeanFactory;
|
12
|
import org.jfw.util.bean.BeanFactory;
|
|
|
13
|
import org.jfw.util.context.JfwAppContext;
|
14
|
|
14
|
|
15
|
@Bean
|
15
|
@Bean
|
16
|
public class TaskJob implements AfterBeanFactory {
|
16
|
public class TaskJob implements AfterBeanFactory {
|
|
|
17
|
private ScheduledExecutorService service;
|
17
|
|
18
|
|
18
|
@Override
|
19
|
@Override
|
19
|
public void handle(BeanFactory bf) throws Throwable {
|
20
|
public void handle(BeanFactory bf) throws Throwable {
|
|
|
|
|
26
|
long taskTime = task - System.currentTimeMillis();
|
27
|
long taskTime = task - System.currentTimeMillis();
|
27
|
taskTime = taskTime > 0 ? taskTime : delayTime + taskTime;
|
28
|
taskTime = taskTime > 0 ? taskTime : delayTime + taskTime;
|
28
|
|
29
|
|
29
|
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
|
|
|
|
|
30
|
this.service = JfwAppContext.getScheduledExecutorService();
|
30
|
// 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
|
31
|
// 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
|
31
|
service.scheduleAtFixedRate(tje, taskTime, delayTime, TimeUnit.MILLISECONDS);
|
32
|
service.scheduleAtFixedRate(tje, taskTime, delayTime, TimeUnit.MILLISECONDS);
|
32
|
// service.scheduleAtFixedRate(ultje, taskTime, delayTime, TimeUnit.MILLISECONDS);
|
33
|
// service.scheduleAtFixedRate(ultje, taskTime, delayTime, TimeUnit.MILLISECONDS);
|