首先要创建动态timer管理类,用于调度管理TimerTask任务
import java.util.Date;
import java.util.List;
import java.util.Timer;
import org.apache.log4j.Logger;
/**
* 任务调度管理器
*/
public class DynamicTaskManager {
private static Logger logger = Logger.getLogger(DynamicTaskManager.class);
static{
taskManager = new DynamicTaskManager();
}
/**
* 单例对象
*/
private static DynamicTaskManager taskManager = null;
/**
* 时间调度对象
*/
private static Timer timer = new Timer();
/**
* 任务
*/
private static DynamicTimerTask task = null;
public static DynamicTaskManager getInstance() {
if (taskManager == null) {
taskManager = new DynamicTaskManager();
}
return taskManager;
}
/**
* 启动定时器
* jar 监控
* others cpu disk 监控
*/
@SuppressWarnings("unchecked")
public void start() {
// 启动任务
startTask();
}
/**
* 构建定时任务
*/
public DynamicTimerTask startTask(){
Date date = new Date();
long period = 10000;
// 如果当前时间超过了设定时间,会立即执行一次
task = new DynamicTimerTask();
timer.schedule(task, date, period);
return task;
}
/**
* 清空timer
*/
public void clean(DynamicTimerTask task) {
if (task != null) {
task.cancel();
}
timer.purge();
}
/**
* 停止任务
*/
public void stop(DynamicTimerTask task) {
logger.info("--------stoping---------");
clean(task);
logger.info("---------stopped----------");
}
}
动态TimerTask
import java.util.Date;
import java.util.TimerTask;
import javax.management.AttributeNotFoundException;
import javax.management.MBeanException;
/**
* 可动态修改的任务timer
*/
public class DynamicTimerTask extends TimerTask {
public DynamicTimerTask(){
}
@Override
public void run() {
System.out.println("被调用!!")
}
}