java listener实现定时任务

使用java ServletContextListener 实现各种简单定时任务。

1. 创建ServletContextListener,在3.0版本的web.xml中不再需要添加listener的声明。

package com.test.listener;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

import com.test.job.timerJobTest;
import com.test.job.timerJobTest2;
@WebListener("This is my servlet3.0 listener")
public class MyServletContextListener implements ServletContextListener {
	private Timer timer= null;
	private Timer timer2= null;
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("servletContext被销毁");
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("servletContext 初始化");
		timer= new Timer(true);//创建一个守护线程
		timer2= new Timer(true);
		timerJobTest tjb = new timerJobTest(); //创建要随容器启动的定时任务1
		timerJobTest2 tjb2= new timerJobTest2();//创建要随容器启动的定时任务2
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		Date d1=null;
		try {
			d1 = sdf.parse("2016-08-01 21:28:10");
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		timer.schedule(tjb, d1);//任务1是指定时间执行
		timer2.schedule(tjb2, 10*1000, 20*1000);//任务2是容器启动10秒以后,每20秒执行一次
	}
}

2.创建任务类,任务类是继承了TimerTask 类,并重写了run方法,run方法中就是需要执行的代码段,也可以直接调用其他类

package com.test.job;

import java.util.TimerTask;

public class timerJobTest extends TimerTask {

	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("定时任务1任务被执行");
		
	}

}


package com.test.job;

import java.util.TimerTask;

public class timerJobTest2 extends TimerTask {

	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("定时任务2任务被执行");
		
	}

}




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值