在javaweb项目中定时执行某个功能
1、 java自带定时器,不需要导入jar包
配置web.xml文件
<!--监听器执行类 -->
<listener>
<listener-class>com.syrinx.timertask.TaskListener</listener-class>
</listener>
定义任务执行类,编写业务代码。业务类继承TimerTask
public class Jtimertask extends TimerTask {
//日志对象
static Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);
//判断是否执行
private static boolean isRunning = false;
private ServletContext context = null;
public Jtimertask() {
super();
}
public Jtimertask(ServletContext context) {
this.context = context;
}
@Override
public void run() {
if (!isRunning) {
logger.info("开始定时任务,定时发送消息");
context.log("开始执行指定任务");
/**
* 自己的业务代码
*/
System.out.println("定时任务开始");
}
}
}
定义Listener,规定执行时间,实现ServletContextListener接口
public class TaskListener implements ServletContextListener{
//日志对象
static Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);
public TaskListener() {
}
private java.util.Timer timer = null;
/**
* 初始化定时器
* web 程序运行时候自动加载
*/;
@Override
public void contextInitialized(ServletContextEvent arg0) {
/**
* 设置一个定时器
*/
timer = new java.util.Timer(true);
arg0.getServletContext().log("定时器已启动TEST");
logger.info("定时器启动");
/**
* 定时器到指定的时间时,执行某个操作(如某个类,或方法)
*/
//设置执行时间
int year