定时任务Runnable

说明:

最近做cms想本地修改模板,然后把最新的模板内容存到数据中,所以想到Runnable写个定时任务;

思路:

每隔一分钟查看模板是否有改动,如果有改变执行保存到数据库中;

定时任务核心代码:

package com.aih.common.utils;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class TimeTask {
    public void doTemplate(){
        Runnable runnable=new Runnable(){
            @Override
            public void run() {
                System.out.println("start");
            }
            
        };
        ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();  
        // 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间  
        service.scheduleAtFixedRate(runnable, 10, 1, TimeUnit.SECONDS);  
    }
    
    //测试
    public static void main(String[] args) {
        TimeTask timeTask=new TimeTask();
        timeTask.doTemplate();
    }
}

知识扩展:

  1. /**
  2. * 普通thread
  3. * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,
  4. * 通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下:
  5. * @author GT
  6. *
  7. */
  8. public class Task1 {
  9. public static void main(String[] args) {
  10. // run in a second
  11. final long timeInterval = 1000;
  12. Runnable runnable = new Runnable() {
  13. public void run() {
  14. while (true) {
  15. // ------- code for task to run
  16. System.out.println("Hello !!");
  17. // ------- ends here
  18. try {
  19. Thread.sleep(timeInterval);
  20. } catch (InterruptedException e) {
  21. e.printStackTrace();
  22. }
  23. }
  24. }
  25. };
  26. Thread thread = new Thread(runnable);
  27. thread.start();
  28. }
  29. }
  1. import java.util.Timer;
  2. import java.util.TimerTask;
  3. /**
  4. *
  5. * 于第一种方式相比,优势 1>当启动和去取消任务时可以控制 2>第一次执行任务时可以指定你想要的delay时间
  6. *
  7. * 在实现时,Timer类可以调度任务,TimerTask则是通过在run()方法里实现具体任务。 Timer实例可以调度多任务,它是线程安全的。
  8. * 当Timer的构造器被调用时,它创建了一个线程,这个线程可以用来调度任务。 下面是代码:
  9. *
  10. * @author GT
  11. *
  12. */
  13. public class Task2 {
  14. public static void main(String[] args) {
  15. TimerTask task = new TimerTask() {
  16. @Override
  17. public void run() {
  18. // task to run goes here
  19. System.out.println("Hello !!!");
  20. }
  21. };
  22. Timer timer = new Timer();
  23. long delay = 0;
  24. long intevalPeriod = 1 * 1000;
  25. // schedules the task to be run in an interval
  26. timer.scheduleAtFixedRate(task, delay, intevalPeriod);
  27. } // end of main
  28. }
时间: 2024-08-25 21:33:06

定时任务Runnable的相关文章

使用Timer执行定时任务

一.Timer概述 在Java开发中,会碰到一些需要定时或者延时执行某些任务的需求,这时,我们可以使用Java中的Timer类实现. 二.Timer介绍 Timer是一个定时器类,通过该类可以为指定的定时任务进行配置,所在jar包路径:java.util.TimerTimer定时器实例有多种构造方法:Timer()// 创建一个新计时器Timer(boolean isDaemon)//创建一个新计时器,可以指定其相关的线程作为守护程序运行Timer(String name)//创建一个新计时器,

具体解释java定时任务

在我们编程过程中假设须要运行一些简单的定时任务,无须做复杂的控制.我们能够考虑使用JDK中的Timer定时任务来实现. 以下LZ就其原理.实例以及Timer缺陷三个方面来解析java Timer定时器. 一.简单介绍 在java中一个完整定时任务须要由Timer.TimerTask两个类来配合完毕. API中是这样定义他们的.Timer:一种工具.线程用其安排以后在后台线程中运行的任务.可安排任务运行一次,或者定期反复运行.由TimerTask:Timer 安排为一次运行或反复运行的任务.我们能

android开发步步为营之59:android定时任务之ScheduledThreadPoolExecutor

android定时任务有多种,1.Timer+TimerTask 2.Handler.postDelay   3.AlarmManager  4.ScheduledThreadPoolExecutor,前面3种比较常见,相信大家也经常使用,本文介绍采用多线程的ScheduledThreadPoolExecutor,它相比jdk 1.5的Timer的优点有几点:1.采用多线程,Timer是单线程,一旦Timer里面任何一个TimerTask异常的话,整个Timer线程就会停止 2.Timer依赖计

AlarmManager实现精准定时任务

在项目中,有这么一个功能点,app进程中,需要实现一个定时任务,只要设备处于开机状态,每隔半个小时,就需要定时向服务器上传一次位置信息,并且只要是有网络和获取到GPS信号,进程不能死,如果进程死掉了,需要自动重启.对该点进行细分梳理,包含如下几个小功能点: 1.进程能够实现开机启动. 2.进程需要一直存活,并且能够自动重启. 3.需要定时(30分钟)一次,向server端上报信息. 针对以上三个功能点,第1和2点,实现起来,都不难,唯独第三点,在实现时,一般情况,会考虑到多种方式实现.由于没有自

Java 定时任务

在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现.下面LZ就其原理.实例以及Timer缺陷三个方面来解析JavaTimer定时器. 一.简介 在Java中一个完整定时任务需要由Timer.TimerTask两个类来配合完成. API中是这样定义他们的,Timer:一种工具,线程用其安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行.由TimerTask:Timer 安排为一次执行或重复执行的任务.我们可以这样理

Java定时任务的三种实现方法

译者注:个人觉得用定时任务来跑垃圾回收不是很好的例子,从译者接触到的项目来看,比较常见的是用定时任务来进行非实时计算,清除临时数据.文件等.在本文里,我会给大家介绍3种不同的实现方法:1.普通thread实现2.TimerTask实现3.ScheduledExecutorService实现 一.普通thread 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果.这样可以快速简单的实现,代码如下: 复制代码代码如下: public c

java实现定时任务 Schedule

1.java定时任务可以借助 java.util.Timer 来实现 [java] view plain copy import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class Test { public static void main(String[] args) { //timer1(); timer2(); //timer

JFinal - scheduler 插件做定时任务

基于 jfinal 框架做定时任务可以使用插件 jfinal-scheduler 插件来解决. 下面是我在项目中使用 jfinal-scheduler 的例子. 配置插件,在自定义的 JFinalConfig 类中引入此插件: /** * 配置插件 */ public void configPlugin(Plugins me) { // ... // 定时器插件 SchedulerPlugin sp = new SchedulerPlugin(); Runnable task = new Tas

java定时任务

一.简介 在java编程中,有时需要在指定时间或者指定频率来执行任务,可以使用Timer和TimerTask定时器. Timer类 在工具类Timer中,提供了四个构造方法,每个构造方法都启动了计时器线程,同时Timer类可以保证多个线程可以共享单个Timer对象而无需进行外部同步,所以Timer类是线程安全的.但是由于每一个Timer对象对应的是单个后台线程,用于顺序执行所有的计时器任务,一般情况下我们的线程任务执行所消耗的时间应该非常短,但是由于特殊情况导致某个定时器任务执行的时间太长,那么