您的位置:首页 > 其它

ScheduledExecutorService —定时周期执行指定的任务

2015-07-21 17:50 597 查看
//ScheduledThreadExecutor只支持相对时间。
//接口scheduleAtFixedRate原型定义及参数说明
//public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit);
command:执行线程
initialDelay:初始化延时
period:两次开始执行最小间隔时间
unit:计时单位

public class ReportListener implements ServletContextListener{
private ReportService reportService;
public ReportService getReportService() {
return reportService;
}

public void setReportService(ReportService reportService) {
this.reportService = reportService;
}

@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext servletContext = sce.getServletContext();
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
reportService = (ReportService)wac.getBean("reportService",ReportService.class);

long oneDay = 24 * 60 * 60 * 1000;

long scoreDelay=getTimeMillis("09:00:00") - System.currentTimeMillis();//每月居民积分短信提醒(每月1号上午9点开始)
scoreDelay = scoreDelay > 0 ? scoreDelay : oneDay + scoreDelay;

//TODO
Runnable lastMonthScore = new Runnable(){
public void run(){
Calendar c = Calendar.getInstance();
int nowYear = c.get(Calendar.YEAR);//当前年份
int lastMonth = c.get(Calendar.MONTH);//上月月份
int date=c.get(Calendar.DATE);

//如果当前日期是1号就发送(==1)
if(c.get(Calendar.DATE) == 1){

for(int i=0;i<comminList.size();i++){
String comminid = String.valueOf(comminList.get(i).getId());
List<UserBean> userList = reportService.getUserListByComminid(comminid);
for(int s=0;s<userList.size();s++){
//获取用户
UserBean user=userList.get(s);
//可回收垃圾投放积分
String recoveryScore=reportService.getRecoveryScoreForLastMonth(user.getCommid()+"", user.getId().toString());
//定时定点投放积分
String otherScore=reportService.getOtherScoreForLastMonth(user.getCommid()+"", user.getId().toString());
//巡检积分
String inspection=reportService.getInspectionForLastMonth(user.getCommid()+"", user.getId().toString());
//总积分
int totalScore=Integer.parseInt(recoveryScore)+Integer.parseInt(otherScore);
//上月消费积分
String businessDisprice=reportService.getBusinessDisprice(user.getCommid()+"", user.getId().toString());
//短信内容
String logString="尊敬的用户:"+user.getName()+"您好!"+nowYear+"年"+lastMonth+"月您获得总积分为:"+totalScore+
",其中巡检积分为:"+inspection+",可回收垃圾投放积分为:"+recoveryScore+",定时定点投放积分为:"+otherScore+
",您上月消费积分为:"+businessDisprice+",剩余可用积分为:"+user.getIntegral()+"。";
System.out.println(logString);
//记录日志
LoggerUtil.LogForLastMonthScoreSMS(logString);
//发送短信
SmsServiceUtils.sendMobileMsg(user.getMobilephone(), logString);
}
}
}
}};
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
service.scheduleAtFixedRate(lastMonthScore, scoreDelay, oneDay, TimeUnit.MILLISECONDS);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: