java定时程序的实现,不用Spring

lizongsong 2011-08-26 07:57:21
java定时程序的实现,不用Spring
...全文
140 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizongsong 2011-08-27
  • 打赏
  • 举报
回复
ls真给力啊,谢谢了
luohuijun619 2011-08-26
  • 打赏
  • 举报
回复
web.xml配置

<!-- 定时器监听 -->
<listener>
<listener-class>com.pro_crm.tools.ContextLister</listener-class>
</listener>
luohuijun619 2011-08-26
  • 打赏
  • 举报
回复
package com.pro_crm.tools;

import java.util.Calendar;
import java.util.TimerTask;

import javax.servlet.ServletContext;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.pro_crm.client.dao.ClienDao;
import com.pro_crm.client.dao.LostDao;
import com.pro_crm.client.dao.OrderDao;

public class TimeLister extends TimerTask {

// 时钟点,想实现调度任务每24小时(晚上12点,也即0点)被执行一次,任务开始时间
private static final int C_SCHEDULE_HOUR = 2;
// 是否正在执行(标志) 防止24小时执行下来,任务还未执行完,避免第二次又被调度以引起执行冲突
private static boolean isRuning = false;
// 记录Servlet日志
private ServletContext context = null;

public TimeLister(ServletContext context) {
this.context = context;
}

public void run() {
Calendar time = Calendar.getInstance();
if (!isRuning) {
if (C_SCHEDULE_HOUR == time.get(Calendar.HOUR_OF_DAY)) {
isRuning = true;
// 获取当前系统路径
String path = context.getRealPath("/");
try {
// 加载Spring
ApplicationContext applicationContext = new FileSystemXmlApplicationContext(
path + "/WEB-INF/applicationContext.xml");
// 得到接口
LostDao dao = (LostDao) applicationContext
.getBean("lostDao");
OrderDao orderservice = (OrderDao) applicationContext
.getBean("orderDao");
ClienDao clientdao = (ClienDao) applicationContext
.getBean("clienDao");
// 调用实现方法
dao.allLostInfo(orderservice, clientdao);
} catch (Exception e) {
e.printStackTrace();
}
isRuning = false;
context.log("指定任务执行结束");
}
}
}
}


以前做的,Lz可以运行下
luohuijun619 2011-08-26
  • 打赏
  • 举报
回复
给你看个Timer的例子,tomcat启动就开始定时

package com.pro_crm.tools;

import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ContextLister implements ServletContextListener {

private Timer timer = null;

// 定时器开始
public void contextInitialized(ServletContextEvent event) {
// 设置时间 星期日 5:30 10s
// Date start = new Date();
// start.setHours(2);
// start.setMinutes(30);
// start.setSeconds(10);
// start.toLocaleString();
timer = new Timer(true);
event.getServletContext().log("定时器开始启动");
/*
* @parmer: TimeLister是自定义需要被调度的执行任务(要被定时执行的任务),继承java.util.TimerTask
*
* @parmer: 中间参数0表示无延迟 @parmer: 第三个参数表示每分钟(即601000毫秒)被触发一次
*/
timer.schedule(new TimeLister(event.getServletContext()), 0, 1000 * 60
* 60 * 24 * 7);
event.getServletContext().log("已经将定时任务添加到任务调度表中");
}

// 定时器销毁
public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
event.getServletContext().log("定时器销毁");
}

// 定时调度器
// (1)Timer.schedule(TimerTask task,Date time)安排在制定的时间执行指定的任务。
// (2)Timer.schedule(TimerTask task,Date firstTime ,long
// period)安排指定的任务在指定的时间开始进行重复的固定延迟执行.
// (3)Timer.schedule(TimerTask task,long delay)安排在指定延迟后执行指定的任务.
// (4)Timer.schedule(TimerTask task,long delay,long
// period)安排指定的任务从指定的延迟后开始进行重复的固定延迟执行.
// (5)Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long
// period)安排指定的任务在指定的时间开始进行重复的固定速率执行.
// (6)Timer.scheduleAtFixedRate(TimerTask task,long delay,long
// period)安排指定的任务在指定的延迟后开始进行重复的固定速率执行.
}
softroad 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qybao 的回复:]

Timer,线程都可以
for exampe

Java code
import java.util.*;
class Test {
public static void main(String[] args) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask(……
[/Quote]

+1
qybao 2011-08-26
  • 打赏
  • 举报
回复
Timer,线程都可以
for exampe

import java.util.*;
class Test {
public static void main(String[] args) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
Calendar c = Calendar.getInstance();
System.out.printf("%tF %tT\n", c.getTime(), c.getTime());
}
}, 0, 1000);
}
}
luofeng619 2011-08-26
  • 打赏
  • 举报
回复
没用过,用线程,嘿嘿

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧