java定时器schedule和scheduleAtFixedRate区别

package cn.lonecloud.test;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

/**
 *
 * @Title: Test02.java
 * @Package cn.lonecloud.test
 * @Description:
 * @author lonecloud
 * @date 2016年8月5日 下午4:43:29
 */
public class Test02 {
	public static void main(String[] args) throws Exception{
		timer3();
	}
	/**
	 * scheduleAtFixedRate
	 * 对于这个来说这里的时间是根据你的传入的时间来算
	 * 不管你是否线程休眠与否都要一开始执行
	 * @Description:
	 * @throws Exception
	 */
    public static void timer3() throws Exception{
    	Date date = new Date();
        Timer timer = new Timer();
        Thread.sleep(9000);
        timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {

	                System.out.println(new Date());
            }
        }, date, 1000);
    }
    /**
     * 运行9秒后运行结果
     *  Fri Aug 05 16:46:41 CST 2016
		Fri Aug 05 16:46:41 CST 2016
		Fri Aug 05 16:46:41 CST 2016
		Fri Aug 05 16:46:41 CST 2016
		Fri Aug 05 16:46:41 CST 2016
		Fri Aug 05 16:46:41 CST 2016
		Fri Aug 05 16:46:41 CST 2016
		Fri Aug 05 16:46:41 CST 2016
		Fri Aug 05 16:46:41 CST 2016
		Fri Aug 05 16:46:41 CST 2016
		Fri Aug 05 16:46:42 CST 2016
		Fri Aug 05 16:46:43 CST 2016
		Fri Aug 05 16:46:44 CST 2016
		Fri Aug 05 16:46:45 CST 2016

     */
}
package cn.lonecloud.test;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class Test01 {
	public static void main(String[] args)throws Exception {
		timer2();
	}
	/**
	 * schedule
	 * 线程休眠9s后执行
	 * @Description:
	 * @throws Exception
	 */
    public static void timer2() throws Exception {
    	Date date = new Date();
    	System.out.println(date);
        Timer timer = new Timer();
        Thread.sleep(9000);
        timer.schedule(new TimerTask() {
            public void run() {
	                System.out.println(new Date());
            }
        }, date, 1000);
    }
    /**
     * 结果:
     *  Fri Aug 05 16:48:56 CST 2016
		Fri Aug 05 16:49:05 CST 2016
		Fri Aug 05 16:49:06 CST 2016
		Fri Aug 05 16:49:07 CST 2016
		Fri Aug 05 16:49:08 CST 2016
		Fri Aug 05 16:49:09 CST 2016
		Fri Aug 05 16:49:10 CST 2016
     */
}
时间: 2024-11-05 16:03:26

java定时器schedule和scheduleAtFixedRate区别的相关文章

schedule和scheduleAtFixedRate区别

需求: 由于系统长期运作,各设备之间产生很多信息,一段时间后需要清除数据 考虑方案: 用schedule还是scheduleAtFixedRate,在此比较分析了下这两个的区别 schedule和scheduleAtFixedRate的区别在于,如果指定开始执行的时间在当前系统运行时间之前,scheduleAtFixedRate会把已经过去的时间也作为周期执行,而schedule不会把过去的时间算上. schedule和scheduleAtFixedRate 区别: (1) 2个参数的sched

schedule() 和 scheduleAtFixedRate() 区别

1.  schedule() ,2个参数方法:在执行任务时,如果指定的计划执行时间scheduledExecutionTime <= systemCurrentTime,则task会被立即执行. 2.  schedule() ,3个参数方法:在执行任务时,如果指定的计划执行时间scheduledExecutionTime <= systemCurrentTime,则task会被立即执行,之后按period参数固定重复执行. 3.  scheduleAtFixedRate() ,3个参数方法:在

简单理解java中timer的schedule和scheduleAtFixedRate方法的区别

timer的schedule和scheduleAtFixedRate方法一般情况下是没什么区别的,只在某个情况出现时会有区别--当前任务没有来得及完成下次任务又交到手上. 我们来举个例子: 暑假到了老师给schedule和scheduleAtFixedRate两个同学布置作业. 老师要求学生暑假每天写2页,30天后完成作业. 这两个学生每天按时完成作业,直到第10天,出了意外,两个学生出去旅游花了5天时间,这5天时间里两个人都没有做作业.任务被拖延了. 这时候两个学生采取的策略就不同了: sch

schedule() 和 scheduleAtFixedRate() 的区别--转载

1.  schedule() ,2个参数方法:在执行任务时,如果指定的计划执行时间scheduledExecutionTime <= systemCurrentTime,则task会被立即执行. 2.  schedule() ,3个参数方法:在执行任务时,如果指定的计划执行时间scheduledExecutionTime <= systemCurrentTime,则task会被立即执行,之后按period参数固定重复执行. 3.  scheduleAtFixedRate() ,3个参数方法:在

Timer的schedule和scheduleAtFixedRate方法的区别解析

在java中,Timer类主要用于定时性.周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下 (1)schedule方法:"fixed-delay":如果第一次执行时间被delay了,随后的执行时间按 照 上一次 实际执行完成的时间点 进行计算 (2)scheduleAtFixedRate方法:"fixed-rate":如果第一次执行时间被delay了,随后的执行时间按照 上一

Timer的schedule和scheduleAtFixedRate方法的区别解析(转)

在java中,Timer类主要用于定时性.周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下 (1)schedule方法:“fixed-delay”:如果第一次执行时间被delay了,随后的执行时间按 照 上一次 实际执行完成的时间点 进行计算(2)scheduleAtFixedRate方法:“fixed-rate”:如果第一次执行时间被delay了,随后的执行时间按照 上一次开始的 时间点 进行计算,并且

Java定时器的使用(Timer简介)

在开发中,我们经常需要一些周期性的操作,例如每隔几分钟就进行某一项操作.这时候我们就要去设置个定时器,Java中最方便.最高效的实现方式是用java.util.Timer工具类,再通过调度java.util.TimerTask任务. 1.简介 Timer是一种工具,线程用其安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行.实际上是个线程,定时调度所拥有的TimerTasks. TimerTask是一个抽象类,它的子类由 Timer 安排为一次执行或重复执行的任务.实际上就是一

java 定时器的使用

在北京这边实习也一个多月了,也接触了不少东西,今天领导开会,说服务器压力太大,客户很不满意,访问速度上要求很苛刻,我们项目里的一些操作,没有必要写成动态的都改写成静态的,每天定时更新一下静态html页面里面的内容(因为客户每天会定时更新一些内容,而且只更新一次). 听得我好蒙啊,我头一次听说java 的定时操作呢!要命的东西,好坑的啊,晚上抽出了时间,学习了一下java的定时器,也就是一些基本的操作. java定时器主要用到两个类:Timer(计划任务调度类)和TimerTask(具体任务类)

java定时器

以下内容根据 JavaTM Tutorial 和相关API doc和网上的资料翻译整理,以供日后查看和参考: 1.描述 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. 简单的一个例程: import java.util.Timer; import java.util.TimerTask; /** * Simple demo that uses java.util.T