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); } } }


上一篇:
下一篇:
切换中文