有一个需求,新用户注册,注册成功10天未缴费,发邮件提醒,如何实现 需求线程邮件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以用数据库的存储过程去做,只是比较麻烦。如果你要用Java去做的话,可以在每天0点启动一个定时器(Timer)去扫描数据库里面哪些用户是注册了10天未交费的,发邮件就可以了。关于Timer可以百度一下、。 Timer timer = new Timer(); int start = 5 * 60 * 1000; int interval = 60 * 60 * 1000; timer.schedule(new TimerTask() { @Override public void run() { //TODO } }, start, interval); 如何固定时间,timer.schedule(new Task(), time,5*1000); ,例如早上的10点。我设置一天检查一次可以吗?这样线程一直占用着会不会耗性能? 没做过推送,不知道,Timer 线程占用,会不会耗性能? 在项目里配置了监听,监听正常启动 ,运行。package com.spyglass.authorize.listener;import java.util.Timer;import java.util.TimerTask;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.apache.log4j.Logger;import org.springframework.web.context.WebApplicationContext;import org.springframework.web.context.support.WebApplicationContextUtils;import com.spyglass.authorize.hbm.dao.TableUserDAO;public class CheckTrialProLisener implements ServletContextListener{ public static final Logger logger = Logger.getLogger(CheckTrialProLisener.class); private Timer timer =null; private WebApplicationContext springContext; private TableUserDAO tableUserDao; public void contextDestroyed(ServletContextEvent sce) { timer.cancel(); System.out.println("timer destroyed ......"); logger.debug("timer destroyed ......"); } public void contextInitialized(ServletContextEvent sce) { springContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());//为null if(springContext != null){ tableUserDao = (TableUserDAO)springContext.getBean("TableUserDAO"); int size = tableUserDao.findAll("TRIALPRO").size(); System.out.println("get bean success trialPro size is = "+size); }else{ System.out.println("getBean failed "); } timer = new Timer(); timer.schedule(new PrialProTask(), 14*1000,5*1000); logger.debug("CheckTrialProLisener contextInitialized method !"); } private class PrialProTask extends TimerTask{ public void run() { System.out.println("this is PrialTask ......"); logger.debug("CheckTrialProLisener run !"); } }}springContext 获取不到,springContext 获取不到就获取补到Dao,无法进行下一步操作。 你都用到spring ,怎么不用spring 的job 定时器,每天定点查询数据库扫描Timer timer=new Timer(); timer.schedule(new ListByDayTimerTask(),10000,86400000); 每隔一段时间扫描一次 执行ListByDayTimerTask的run方法 ,需要执行main方法人工启动或者写个监听ServletContextListener 在web.xml配置一下,启动项目后自动监听扫描 spring 有一个定是框架 你这需求完美满足 帮忙猜字游戏问题,给重分!! 急求助:关于编码的问题 JAVA百分号替换如何实现 java_home是什么?? 接口Serializable源代码中怎么什么也没有呢? Java Swing表格中点击右键时保留左键选中的表格 mysql数据库的转码问题,急急急! 初学JAVA问题多多.高手来帮忙. ====中英文混合的一个字符串,如何用java把特定的中文分离出来??====(内详) Java多线程执行顺序 GC日志 为什么可以在子类中可以调用父类(这个父类是抽象类)的构造函数,抽象类不是不可以实例化吗?
Timer timer = new Timer();
int start = 5 * 60 * 1000;
int interval = 60 * 60 * 1000;
timer.schedule(new TimerTask() { @Override
public void run() {
//TODO
}
}, start, interval);
我设置一天检查一次可以吗?这样线程一直占用着会不会耗性能?
import java.util.TimerTask;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;import org.apache.log4j.Logger;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;import com.spyglass.authorize.hbm.dao.TableUserDAO;public class CheckTrialProLisener implements ServletContextListener{ public static final Logger logger = Logger.getLogger(CheckTrialProLisener.class);
private Timer timer =null;
private WebApplicationContext springContext;
private TableUserDAO tableUserDao;
public void contextDestroyed(ServletContextEvent sce) {
timer.cancel();
System.out.println("timer destroyed ......");
logger.debug("timer destroyed ......");
} public void contextInitialized(ServletContextEvent sce) {
springContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());//为null
if(springContext != null){
tableUserDao = (TableUserDAO)springContext.getBean("TableUserDAO");
int size = tableUserDao.findAll("TRIALPRO").size();
System.out.println("get bean success trialPro size is = "+size);
}else{
System.out.println("getBean failed ");
}
timer = new Timer();
timer.schedule(new PrialProTask(), 14*1000,5*1000);
logger.debug("CheckTrialProLisener contextInitialized method !");
}
private class PrialProTask extends TimerTask{ public void run() {
System.out.println("this is PrialTask ......");
logger.debug("CheckTrialProLisener run !");
}
}
}
springContext 获取不到,
springContext 获取不到就获取补到Dao,无法进行下一步操作。
Timer timer=new Timer();
timer.schedule(new ListByDayTimerTask(),10000,86400000);
每隔一段时间扫描一次 执行ListByDayTimerTask的run方法 ,需要执行main方法人工启动或者写个监听ServletContextListener 在web.xml配置一下,启动项目后自动监听扫描