All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.weicoder.common.concurrent.Schedules Maven / Gradle / Ivy

package com.weicoder.common.concurrent;

import java.lang.reflect.Method;

import com.weicoder.common.log.Logs;
import com.weicoder.common.params.CommonParams;
import com.weicoder.common.util.BeanUtil;
import com.weicoder.common.util.ClassUtil;

/**
 * 定时任务执行类初始化
 * @author WD
 */
public final class Schedules {
	/**
	 * 初始化定时任务
	 */
	public static void init() {
		// 循环处理任务类
		ClassUtil.getAnnotationClass(CommonParams.getPackages("schedule"), Schedule.class)
				.forEach(c -> {
					// 处理所有方法
					for (Method m : c.getDeclaredMethods()) {
						// 处理delay
						Delay delay = m.getDeclaredAnnotation(Delay.class);
						if (delay == null) {
							// 处理Rate
							Rate rate = m.getDeclaredAnnotation(Rate.class);
							if (rate != null) {
								// 添加定时任务
								ScheduledUtil.rate(
										() -> BeanUtil.invoke(BeanUtil.newInstance(c), m),
										rate.start(), rate.value(), rate.unit());
								Logs.info("add schedule name={},rate={}", m.getName(), rate);
							}
						} else {
							ScheduledUtil.delay(() -> BeanUtil.invoke(BeanUtil.newInstance(c), m),
									delay.start(), delay.value(), delay.unit());
							Logs.info("add schedule name={},delay={}", m.getName(), delay);
						}
					}
				});
	}

	private Schedules() {}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy