java定时执行任务(一)
需求:
经常遇到这样的需求:要求每天执行一次任务,执行任务时间是凌晨3点
实现:
为了便于检测,我假设的是下一分钟执行任务,每10秒重复执行。(对应现实项目:每天3点执行任务。那么就是下一个3点执行任务,并每次sleep24小时)
TimerManager.java
package cn.test.test; import java.util.Calendar;
import java.util.Date;
import java.util.Timer; public class TimerManager {
//定义时间间隔 根据具体情况定 我假设每10s执行一次
private static final long PERIOD_DAY = 10 * 1000;
public TimerManager() {
Calendar calendar = Calendar.getInstance(); /*** 定制下一分钟执行方法 ***/ calendar.set(Calendar.HOUR_OF_DAY, 3);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0); Date date=calendar.getTime(); //第一次执行定时任务的时间
System.out.println(date);
System.out.println("before 方法比较:"+date.before(new Date()));
//如果第一次执行定时任务的时间 小于 当前的时间
//此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。循环执行的周期则以当前时间为准
if (date.before(new Date())) {
date = this.addDay(date, 1);
System.out.println(date);
} Timer timer = new Timer(); LyzTimerTask task = new LyzTimerTask();
//安排指定的任务在指定的时间开始进行重复的固定延迟执行。
timer.schedule(task,date,PERIOD_DAY);
} // 增加或减少天数
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
} public static void main(String[] args) {
new TimerManager();
}
}
LyzTimerTask.java
package cn.test.test; import java.text.SimpleDateFormat;
import java.util.TimerTask; public class LyzTimerTask extends TimerTask{
private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
timePrint time = new timePrint();
@Override
public void run() {
// TODO Auto-generated method stub
try {
time.nowTime();
} catch (Exception e) {
System.out.println("定时分析错误");
}
} }
timePrint.java
package cn.test.test; import java.text.SimpleDateFormat;
import java.util.Calendar; public class timePrint {
private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void nowTime(){
System.out.println("执行当前时间"+formatter.format(Calendar.getInstance().getTime()));
}
}
上述程序我们就可以实现定时执行timePrint中的nowTime函数。
为了更完美测试,我写了另外一个主函数,在上述程序的线程自动调用timePrint自动执行时,我用新的主函数访问执行timePrint,结果是可以同步并不会报错。
package cn.test.test;
public class testTimer {
public static void main(String[] args) {
timePrint time = new timePrint();
time.nowTime();
}
}
java定时执行任务(一)的更多相关文章
- JAVA定时执行任务,每天定时几点钟执行任务
JAVA定时执行任务,每天定时几点钟执行任务的示例如下: 1.建立TimerManage类,设置时间点,时间点设置的管理类,代码如下: package com.pcitc.time; import j ...
- java 定时执行
Timer和TimerTask CountDownTimer (android)
- Java 在某一个时间点定时执行任务(转载)
java定时任务,每天定时执行任务.以下是这个例子的全部代码. public class TimerManager { //时间间隔 private static final long PERIOD_ ...
- java web每天定时执行任务
第一步: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ...
- java web每天定时执行任务(四步轻松搞定)
第一步: package com.eh.util; import java.util.Calendar; import java.util.Date; import java.util.Timer; ...
- linux定时执行任务crontab命令用法
linux系统的定时任务是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另外, 由于使用者自己也可以设置计划任务,所 ...
- 用Quartz处理定时执行的任务
这次做的项目中,有一部分功能需要实现定时执行.呃,这样说可能有点笼统,打个比方吧.例如用户在登录的时候,连续输错3次密码后,系统会将该用户冻结,不再允许该用户登录系统,等到了晚上零晨时分,再为所有被冻 ...
- java定时任务调度-Timer(1)
一.定义 有且仅有一个后台线程对多个业务线程进行定时定频率的调度 二. Timer ----> Timer Task (中有run();方法) 通过 new Timer().schedul ...
- Centos7 利用crontab定时执行任务及配置方法
crond是什么? crond 和crontab是不可分割的.crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于 ...
随机推荐
- 了解jQuery并掌握jQuery对象和DOM对象的区别
jQuery的优势: 开源--开放源代码 轻量级 强大的选择器 出色的DOM操作(对DOM元素的一个增删改查) 完善的Ajax,出色的浏览器兼容性,丰富的插件支持,完善的文档(说明书) 链式操作方式, ...
- CentOS6升级Python2.6到3.7,错误处理[No module named '_ctypes']
CentOS6升级Python2.6到3.7,错误处理[No module named '_ctypes'] 因开发需要,在CentOS 6 服务器将Python2进行升级到Python3.由于工作中 ...
- 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)
# 『Python基础-12』各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的 ...
- PTA基础编程题目集7-1厘米换算英尺英寸
如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048.现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸 ...
- Go语言的接口与反射
美女图片没啥用,就是为了好看 本文还在完善中... go总体而言是一门比较好入门的语言,许多特性都很精简易懂,但是接口与反射除外.他们真的让人头疼,不知道是自身资质问题还是怎么着,总是觉得很多书上写的 ...
- C# WebBrowser的DrawToBitmap方法 截取网页保存为图片
bool mark = true; private void btnOpen_Click(object sender, EventArgs e) { ...
- js中call()方法和apply方法的使用
1. 方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
- MySQL - 问题集 - Access denied; you need the SUPER privilege for
当执行存储过程相关操作时,如果出现该错误,则往下看. 打开存储过程,会发现“CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost`”. 由于DEFI ...
- 编译chromium时下载gn.exe时出错的解决方案
天朝人写个代码真难,想要编译一下chromium,但是获取代码时各种坑,不是网速慢,就是网络联不通,真难玩. 本文针对下载gn.exe等工具时失败的解决方案. 原因1:gclient没有走代理,针对使 ...
- debian8+lnmp1.2一键安装+WordPress3.9
下载并安装LNMP一键安装包 wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-ful ...