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() {
		// 循环处理任务类
		for (Class c : ClassUtil.getAnnotationClass(CommonParams.getPackages("schedule"),
				Schedule.class)) {
			// 处理所有方法
			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