本文中Java定时任务一共有三种,分别是利用Thread类中sleep()方法,Timer与TimerTask类以及ScheduledExecutorService接口来实现延时以及定时任务。
一.<!--[endif]-->类
这是最简单的一种方法,通过创建一个Thread类,让其一直在while循环中执行,并通过sleep方法延时一段时间便可以达到定时任务的目的。
简单代码如下:
- package pzw.TimedTask;
- public class Maintest extends Thread{
- private final int interval = 1000;
- public static void main(String[] args){
- Maintest mt = new Maintest();
- mt.start();
- }
- public void run(){
- while(true){
- try {
- sleep(interval);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println("定时任务已执行!!");
- }
- }
- }
而这种方法的缺点也是显而易见的,由于sleep()方法本身的缺陷,导致定时可能会不大精确,同时不方便用户修改启动的delay时间,而且启动与停止任务并不方便控制。
二.Timer类与TimerTask类
该方法通过使用Timer类来启动任务,TimerTask类通过run方法来实现具体的定时任务内容。
这种方法虽然没有之前那种那么简单快速,但明显也多了很多有用的功能,在实现时,Timer类用于调度任务,功能是在指定的时间间隔内反复触发指定窗口的定时器事件,而TimerTask类用于创建一个新线程,执行具体任务。
- public static void main(String[] args){
- // Maintest mt = new Maintest();
- // mt.start();
- TimerTask tt = new TimerTask(){
- public void run(){
- //具体任务的操作
- System.out.println("定时任务");
- }
- };
- Timer time = new Timer();
- long delay = 0;
- long period = 1*1000;
- time.scheduleAtFixedRate(tt, delay, period);
- }
上面即是使用Timer类与TimerTask类来实现Java定时任务,这种方法的比直接在一个线程中使用sleep()方法无疑功能多了很多,例如,可以控制启动与任务的停止,其次还可以指定任务延时启动。但是由于Timer类使用过的是单线程,在处理需要多个线程同时使用者,有着明显的不足之处,因此,我们可以使用第三种方法ScheduledExecutorService接口。
三.ScheduledExecutorService接口
根据我查的资料,ScheduledExecutorService接口是从Java SE 5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。而相较于之前的几种方法,这种方法使用的不是单线程的方法,而是通过使用线程池来执行任务的,那么线程池是什么呢?线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。那么使用线程池的优点有哪些?
1、可以优化资源的使用效率,提高其性能;
2、可以完成需要大量线程的任务;
3、对性能要求苛刻的应用;
4、接受突发性的大量请求,但不至于使服务器因此产生大量线程的应用。
示例:
- Runnable run = new Runnable(){
- public void run() {
- System.out.println("每隔一秒钟输出一次!!!");
- }
- };
- //安排延时任务
- ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
- service.scheduleAtFixedRate(run, 0, 1, TimeUnit.SECONDS);
相关推荐
java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现...
可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合实现动态的改变定时任务的状态的一个...
主要介绍了Quartz实现JAVA定时任务的动态配置的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
只需要在web.xml文件中添加监听器listener,然后加入附件中的文件,并将lstener指向所添加的文件TimerTaskListener,定时任务的研发便可轻松搞定!
本文档详细的描述啦如何制定一个定时的服务,通过定时服务调用功能类,完成某项定时的任务
Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查,部署到tomcat即可看到定时任务执行效果。本人亲测,可用!
Java定时任务是Java提供的一种在指定时间执行任务的功能,它可以帮助开发者实现一些周期性或者延迟的任务。 Java定时任务的分类 Java定时任务主要分为两种类型,一种是单次定时任务,即只执行一次的任务;另一种是...
自留demo,java定时任务quartz的基本实现,对应博客https://blog.csdn.net/jing12062011/article/details/82758536
spring+quartz整合,动态管理定时任务,可对正在进行的任务操作增删改查,可配合数据库进行操作
1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled
使用quartz实现的java 定时任务,通过写cron表达式,让任务在制定时刻触发执行。
Java使用quartz实现任务调度定时任务
java每天实现定点执行任务java每天实现定点执行任务java每天实现定点执行任务java每天实现定点执行任务java每天实现定点执行任务java每天实现定点执行任务java每天实现定点执行任务
用java代码实现的定时任务,
可定时启动任务 或者项目启动时启动
1_什么事定时任务.mp4 2_为什么学习定时任务.mp4 3_定时任务技术发展趋势.mp4 4_主流定时任务框架优缺点和什么是分布式定时任务.mp4 5_环境搭建总体流程.mp4 6_前期准备-JDK.mp4 7_前期准备-Maven.mp4 8_前期准备-...
通过配置数据库连接信息和要执行的sql语句,可实现定时执行多个sql语句。 所要执行的语句只能是写死的,可支持sqlserver mysql oracle。 配置说明: config/sys.properties 中指定数据库类型及连接信息,执行间隔...
用java springboot框架实现定时批处理,更新DB字段内容,更新成功后微信短信推送消息给用户
此项目是基于 javaagent 代理实现的常见 java 定时任务测试维护工具此项目是基于 javaagent 代理实现的常见 java 定时任务测试维护工具此项目是基于 javaagent 代理实现的常见 java 定时任务测试维护工具此项目是...
自留demo,java定时任务quartz的基本实现,对应博客https://blog.csdn.net/jing12062011/article/details/82758536 (上一个传的缺失一个文件,重新传一份,希望审核员帮忙删除上一份)