import java.util.Date;
public class MyTask implements Runnable {
@Override
public void run() {
}
}
properties
task1=0 * * * * ?
task2=0/5 * * * * ?
import org.cronj.CronExpression;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class CronjDemo {
public static void main(String[] args) throws IOException {
InputStream inputStream = CronjDemo.class.getResourceAsStream("/cron-config.properties");
Properties properties = new Properties();
properties.load(inputStream);
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
Map<String, CronExpression> tasks = new HashMap<>();
for (String key : properties.stringPropertyNames()) {
String cronExpr = properties.getProperty(key);
CronExpression cronExpression = CronExpression.createFromCronString(cronExpr);
tasks.put(key, cronExpression);
}
for (String key : tasks.keySet()) {
CronExpression cronExpression = tasks.get(key);
scheduler.scheduleAtFixedRate(new MyTask(), cronExpression.nextTimeAfter(new Date()), cronExpression.nextTimeAfter(new Date()).getTime() - System.currentTimeMillis(), TimeUnit.MILLISECONDS);
}
}
}