redis redisson 线程池示例
作用:redisson提供的定时线程池可在分布式环境下执行定时任务
********************
相关类及接口
RScheduledExecutorService:定时任务线程池
public interface RScheduledExecutorService extends RExecutorService, ScheduledExecutorService, RScheduledExecutorServiceAsync {
RScheduledFuture<?> schedule(Runnable var1, long var2, TimeUnit var4);
<V> RScheduledFuture<V> schedule(Callable<V> var1, long var2, TimeUnit var4);
//var2时间后执行任务
RScheduledFuture<?> scheduleAtFixedRate(Runnable var1, long var2, long var4, TimeUnit var6);
//周期性地执行任务,初始时间间隔var1后,每隔时间段var2后
RScheduledFuture<?> scheduleWithFixedDelay(Runnable var1, long var2, long var4, TimeUnit var6);
//周期性地执行任务,初始时间间隔var1后,任务执行后下一个任务在var2后执行
RScheduledFuture<?> schedule(Runnable var1, CronSchedule var2);
//定时执行任务
}
CronSchedule:创建定时时间
public final class CronSchedule {
private CronExpression expression;
CronSchedule(CronExpression expression) {
this.expression = expression;
}
public static CronSchedule of(String expression) {
return new CronSchedule(new CronExpression(expression));
}//使用字符串构造cron表达式
public static CronSchedule dailyAtHourAndMinute(int hour, int minute) {
String expression = String.format("0 %d %d ? * *", minute, hour);
return of(expression);
}//每天hour时minute分执行任务
public static CronSchedule weeklyOnDayAndHourAndMinute(int hour, int minute, Integer... daysOfWeek) {
if (daysOfWeek != null && daysOfWeek.length != 0) {
String expression = String.format("0 %d %d ? * %d", minute, hour, daysOfWeek[0]);
for(int i = 1; i < daysOfWeek.length; ++i) {
expression = expression + "," + daysOfWeek[i];
}
return of(expression);
} else {
throw new IllegalArgumentException("You must specify at least one day of week.");
}
}//每周daysOfWeek的hour时minute分执行任务
public static CronSchedule monthlyOnDayAndHourAndMinute(int dayOfMonth, int hour, int minute) {
String expression = String.format("0 %d %d %d * ?", minute, hour, dayOfMonth);
return of(expression);
}
public CronExpression getExpression() {
return this.expression;
}//每月dayOfMonth的hour时minute分执行任务
}
********************
示例
public class MyTest11 {
public static void main(String[] args) {
Config config=new Config();
config.useSingleServer().setAddress("redis://***:6379").setPassword("123456");
RedissonClient client= Redisson.create(config);
RScheduledExecutorService executorService=client.getExecutorService("es");
executorService.schedule((Runnable & Serializable) ()->{
System.out.println("hello world");
},1,TimeUnit.SECONDS);
System.out.println(executorService.getName());
System.out.println("主线程运行结束");
}
}