java 定时执行任务

固定某个时间,某个周期运行任务。

1. Timer定时器

封装与TimerTask类中。
用法,继承TimerTask类,创建Timer对象timer,schedule()调度。

2. Executor + 定时器调度

ScheduledExecutorService类
定时任务,周期任务。

例:
3个方法分别为:固定时间运行,固定速率,固定周期。
均为先创建executor对象,再调用schedule,scheduleAFixedRate,scheduleWithFixedDelay。进行调度。

package TimerTakk;import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;public class ScheduleExcutorTest {public static void main(String[] args) throws InterruptedException {//executorAtFixTime();//executorFixedRate();executorFixedDelay();}//固定时间点执行public static void executorAtFixTime() throws InterruptedException {ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);executor.schedule(new task(), 1, TimeUnit.SECONDS);Thread.sleep(20000);executor.shutdown();}//固定速率,上一个周期过去后,检测是否完成//若完成,立即执行,否则等待完成,再执行public static void executorFixedRate() throws InterruptedException {ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);executor.scheduleAtFixedRate(new task(), 1, 3000, TimeUnit.MILLISECONDS);Thread.sleep(20000);executor.shutdown();} //周期任务,固定延时,从上一个任务结束开始计时public static void executorFixedDelay() throws InterruptedException {ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);executor.scheduleWithFixedDelay(new task(), 1, 4, TimeUnit.SECONDS);Thread.sleep(20000);executor.shutdown();}
}class task implements Runnable{public void run() {System.out.println("task is running!" + new Date());try {Thread.sleep(1000);}catch(InterruptedException e) {e.printStackTrace();}}
}

3. Quartz

第三方包,较为完善的任务调度框架。
解决Timer零星管理问题;
执行任务时,若出现异常,会继续执行(TImer不会)。
具体蛮复杂。

例:

package TimerTakk;import org.quartz.JobDetail;
import org.quartz.Scheduler;import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.TriggerBuilder.newTrigger;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.JobBuilder.newJob;public class QuartTest {public static void main(String[] args) throws Exception {//创建SchedulerScheduler scheduler = StdSchedulerFactory.getDefaultScheduler();//创建TriggerTrigger trigger = (Trigger) newTrigger().withIdentity("trigger1", "group1").startNow().withSchedule(simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();//定义一个JobDetailJobDetail job = newJob(HelloJob.class) .withIdentity("job1", "group1").usingJobData("name", "quartz").build();//加入这个调度scheduler.scheduleJob(job, trigger);scheduler.start();Thread.sleep(10000);scheduler.shutdown();}
}
// HelloJob实现
package TimerTakk;import java.util.Date;import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;public class HelloJob implements Job{@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {JobDetail detail = context.getJobDetail();String name = detail.getJobDataMap().getString("name");System.out.println("hello from " + name + " at " + new Date());}
}

java 定时执行任务相关推荐

  1. java 定时执行方法_Java定时执行任务 方法总结

    JAVA技巧(Java定时执行任务的实现方法)2009年02月07日 星期六 10:36定时执行任务的三种方法: 1)java.util.Timer. 2)ServletContextListener ...

  2. java定时执行一次_java Timer(定时调用、实现固定时间执行)

    最近需要用到定时调用的功能.可以通过java的Timer类来进行定时调用,下面是有关Timer的一些相关知识. 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个 ...

  3. java定时执行sql语句_spring中使用quartz动态添加定时任务执行sql

    系统用来每天插入视图数据... 一.数据库表设计 1.接口配置表(t_m_db_interface_config) 2.接口日志表(t_m_db_interface_log) 3.前端配置页面 查询页 ...

  4. java定时执行bat_windows定时器配置执行java jar文件的方法详解

    ##创建测试类 新建Java工程创建测试类如下代码:(创建文件验证定时器是否执行) package makeFile; import java.io.File; import java.io.IOEx ...

  5. java定时执行某个方法_Java中定时执行任务的三种方法

    Java中定时执行任务的三种方法 1)java.util.Timer 这个方法应该是最常用的,不过这个方法需要手工启动你的任务: Timer timer=new Timer(); timer.sche ...

  6. java定时执行一段代码

    public static void main(String[] args) {   //获得当天的日期    SimpleDateFormat sdf = new SimpleDateFormat( ...

  7. java定时执行(设置每天几点执行一次)

    今日收获 理解并学习了如何使用定时器完成设置每天早上八点程序执行一次 可自行扩展: public void TimerTaskTest{ // 创建一个定时器任务TimerTask timerTask ...

  8. 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 ...

  9. java定时任务,每天定时执行任务

    java定时任务,每天定时执行任务.以下是这个例子的全部代码. public class TimerManager {//时间间隔private static final long PERIOD_DA ...

最新文章

  1. 暑假想打比赛,小白怎么从0入门?
  2. 计算文本文件中各个词(中英文)出现的频率
  3. 对于下一代互联网的畅想
  4. Python工程师必看的面试问题与解答(中) 1
  5. [渝粤教育] 中国地质大学 思想道德修养与法律基础 复习题
  6. java 欧拉_项目欧拉#6 Java协助
  7. 用C语言实现正则表达式匹配器
  8. 威信游戏小程序源码-合成大西瓜小游戏(合成版)源码 附带流量主功能
  9. 增长量计算n+1原则_资料分析几大常用公式,增速、A/B型公式.....
  10. matlab 读取midi,matlab miditoolbox中的midi文件生成函数的改进
  11. scipy csc csr到底是什么东西
  12. AD模数转换模块diy(AD9236/12位/80MSPS)
  13. 高洛峰招徒培养IT名师
  14. 胆的功能--中医谈胆的作用
  15. 计算机桌面图标损坏,损坏的图像,教您提示损坏的图像该怎么解决
  16. RTP/RTCP 和 SRTP/SRTCP协议
  17. linux命令:find、打包解包、vi编辑器、用户权限
  18. openfoam 源代码解析
  19. 使用迭代查找一个list中最小和最大值,并返回一个tuple:
  20. 2022T电梯修理考试模拟100题及答案

热门文章

  1. java thread join()_Java中Thread.join()的使用方法
  2. 神经网络入门概念和框架理解(YOLOv1v2v3改进分析)
  3. 移动营销的魔力:让你的客户无处可逃(附赠2012移动营销百问百答手册)
  4. 依赖反转原则DIP 与使用了Repository模式的asp.net core项目结构
  5. oracle--逻辑对象--bai
  6. 【转】HBase原理和设计
  7. C# WebService 基础实例
  8. 【转】硬盘的寻址和工作模式
  9. .net企业级架构实战之1——框架综述
  10. PHP收费事件导致用户流失,PHP秒杀系统方案(解决大流量,高并发)