java每月月底定时执行指定任务 功能需求: 每月最后一天23:59分定时执行指定的任务,用JAVA能实现吗? 若能实现,还请赐教并不吝细节~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当然可以,不过一个线程一个月才有机会执行一次(她会郁闷死的...)如果服务器down了,就不好说了啊,以前写的定时任务是用Thread.sleep();据说不够精确,也有C友们说用Timer的哪个东东也有说用qua***什么的,忘记了,呵呵 是在WEB上用么?如果是在WEB上用的话,可以使用Spring任务调度 使用java.util.Timer或者Spring的任务(也是对Time的封装) 应用部署在服务器上?期间是一直长时间运行么?1.java.util.Timer()2.Executors.newSingleThreadScheduledExecutor() 这种不大好因为web容器down掉了就没了而用quartz的话只有服务器挂了才不执行的 这个就是quartz,spring没有自己的任务调度,而是集成的quartz.你的这个需求用quartz是最适合的了quartz可以放在web环境使用,也可以单独使用,楼主googel一下就有很多资料 quartz 任务调度。定时执行任务。。做短信的时候用过,,不错的。。lz可以查查看,怎么用着 CRON 表达式写成这样就行了00 59 23 L * ? linux服务器上用cronjob没必要使用java来实现,在linux已经提供的情况 linux下建议用cronjob,很方便!如果非要用java实现,可以考虑用java.util.Timer() ,也很方便 一定要23:59分吗?我暂时能想到的也是Timer,设定为每分钟执行一下,判断日期和时间是不是月底的23:59,是就执行,不是就不执行。或者可以用一个每天运行一次的Timer,判断是否到月底,是的话创建一个每小时执行一次的,然后直到分钟(老大套老二的战术)应该有更好的方法。 没谁规定spring和quartz必须在Web容器里运行。做成什么都行。 人家已经说了要执行指定的任务,我想这个任务肯定不会是个 Shell 脚本。 楼主,可以参考一下public static void showTimer() { TimerTask task = new TimerTask() { @Override public void run() { System.out.println("执行定时任务!!!"); } }; Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(day); /*** 定制二日后00:24:00执行方法 ***/ calendar.set(year, month, day, 20, 34, 00); Date date = calendar.getTime(); Timer timer = new Timer(); timer.schedule(task, date,1000); } public static void main(String[] args) { showTimer(); } 如果非得用java实现定时,可以用Timer 或者quartz等其实操作系统的定时任务,更适合你! 当然可以了,上面说的quartz 以及spring中定时器 都可以。 这种问题,问google,只需0.1秒就可以找到答案,莫非楼主分太多,就是为了散分? 最近碰到类似的需求去google去 cronjob 也能启动java程序啊或者把java程序批量写在一个shell脚本里面。我没显摆好不好。。真是的 用java的线程做就可以了我公司经常写这种监控程序 现在很少用cronjob了,如果用java的话quartz job,挂在tomcat下run。 1.java.util.Timer() 2.Executors.newSingleThreadScheduledExecutor() 定时执行 可以实现,使用Java 定时器TimerTask 或 自定义一个线程都可以。但这种功能最好使用操作系统的功能实现。1.如果是Windows,可以使用操作系统的定时任务。2.如果是Linux或Solaris,可以使用Cron表达式实现。这样才是比较合理的。 当然可以啊 spring 有定时器啊,想什么时候跑就什么时候跑啊 quarz可以,但是服务器down掉后,再启动就不会执行了,所以在服务器启动时要判断是否已经执行指定任务 public static void showTimer() { TimerTask task = new TimerTask() { @Override public void run() { System.out.println("执行定时任务!!!"); } }; Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(day); /*** 定制二日后00:24:00执行方法 ***/ calendar.set(year, month, day, 20, 34, 00); Date date = calendar.getTime(); Timer timer = new Timer(); timer.schedule(task, date,1000); } public static void main(String[] args) { showTimer(); } 可以考虑用quartz + spring 就是!如果为了每月底执行一次,就要让程序在内存中占用一个月的时间,太不划算了。直接用linux的crontab不就好了。 子类创建实例时调用父类构造函数的问题 关于在panel上添加button的问题 Jtree 显示Jpanel问题 请教一道选择题 一个日期格式转换的问题 浏览器中显示不出Applet程序? 快捷键的问题,请帮忙... 有谁知道,JCreator工具栏中一排的User tools 有什么用?怎么用? ★★★★★我精通VB, 精通C++, 了解WINDOWS C, 略懂MFC, 智商中等. 请问, 在这样的基础上, 我从JAVA一窍不通开始学JAVA, 用多长时间可以掌握JAVA? ★★★★★ 刚刚学习java有些不懂的问题请教大家 Java telnet 登入问题 java 新手向各位前辈请教
如果服务器down了,就不好说了啊,
以前写的定时任务是用Thread.sleep();
据说不够精确,也有C友们说用Timer的哪个东东
也有说用qua***什么的,忘记了,呵呵
2.Executors.newSingleThreadScheduledExecutor()
因为web容器down掉了就没了
而用quartz的话
只有服务器挂了才不执行的
你的这个需求用quartz是最适合的了
quartz可以放在web环境使用,也可以单独使用,楼主googel一下就有很多资料
定时执行任务。。
做短信的时候用过,,不错的。。
lz可以查查看,怎么用着
没必要使用java来实现,在linux已经提供的情况
我暂时能想到的也是Timer,设定为每分钟执行一下,判断日期和时间是不是月底的23:59,是就执行,不是就不执行。
或者可以用一个每天运行一次的Timer,判断是否到月底,是的话创建一个每小时执行一次的,然后直到分钟(老大套老二的战术)
应该有更好的方法。
人家已经说了要执行指定的任务,我想这个任务肯定不会是个 Shell 脚本。
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("执行定时任务!!!");
} }; Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
/*** 定制二日后00:24:00执行方法 ***/
calendar.set(year, month, day, 20, 34, 00);
Date date = calendar.getTime();
Timer timer = new Timer();
timer.schedule(task, date,1000);
} public static void main(String[] args) {
showTimer();
}
如果非得用java实现定时,可以用Timer 或者quartz等其实操作系统的定时任务,更适合你!
或者把java程序批量写在一个shell脚本里面。
我没显摆好不好。。真是的
2.Executors.newSingleThreadScheduledExecutor()
定时执行
1.如果是Windows,可以使用操作系统的定时任务。
2.如果是Linux或Solaris,可以使用Cron表达式实现。
这样才是比较合理的。
spring 有定时器啊,想什么时候跑就什么时候跑啊
public static void showTimer() {
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("执行定时任务!!!");
} }; Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
/*** 定制二日后00:24:00执行方法 ***/
calendar.set(year, month, day, 20, 34, 00);
Date date = calendar.getTime();
Timer timer = new Timer();
timer.schedule(task, date,1000);
} public static void main(String[] args) {
showTimer();
}
就是!如果为了每月底执行一次,就要让程序在内存中占用一个月的时间,太不划算了。
直接用linux的crontab不就好了。