`

JDK timer

    博客分类:
  • jdk
阅读更多

1.java.util.Timer.schedule(TimerTask task, long delay):多长时间(毫秒)后执行任务

2.java.util.Timer.schedule(TimerTask task, Date time):设定某个时间执行任务

3.java.util.Timer.schedule(TimerTask task, long delay,longperiod):delay时间后开始执行任务,并每隔period时间调用任务一次。

4.java.util.Timer.schedule(TimerTask task, Date firstTime, long period):第一次在指定firstTime时间点执行任务,之后每隔period时间调用任务一次。

5.java.util.Timer.scheduleAtFixedRate(TimerTask task, long delay, long period):delay时间后开始执行任务,并每隔period时间调用任务一次。

6.java.util.Timer.scheduleAtFixedRate(TimerTask task, Date firstTime, long period):第一次在指定firstTime时间点执行任务,之后每隔period时间调用任务一次。

7.java.util.Timer.cancel():终止该Timer

8.java.util.TimerTask.cancel():终止该TimerTask

 

schedule与scheduleAtFixedRate的主要区别是

1. 不管执行的任务耗时多久,schedule总会按照指定的时间间隔去执行

2. 对于scheduleAtFixedRate,如果前一次任务时间超过了period(时间间隔),下一次任务将提前执行以保证2次任务执行的执行频率达到指定period

 

timer.DefaultTimerTask

package timer;

import java.util.Random;
import java.util.TimerTask;

public class DefaultTimerTask extends TimerTask{

	private long count = 1;
	private long prevInvokeTime = 0;
	
	
	@Override
	public void run() {
		long currentInvokeTime = System.currentTimeMillis();
		
		if(prevInvokeTime>0){
			System.out.println("invoke this execution after ["+(currentInvokeTime-prevInvokeTime)+"]");
		}
		
		try {
			Thread.sleep(new Random().nextInt(2000));
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println("execution count is ["+count+++"]");
		
		prevInvokeTime = currentInvokeTime;
		
	}

}

 

timer.MyTimer.java

package timer;

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

public class MyTimer {
	
	public static void executionOnce(){
		Timer timer = new Timer();
		
		TimerTask task = new DefaultTimerTask();
		
		timer.schedule(task, 1000);
	}
	
	public static void executionAtSpecifiedTime(){
		Timer timer = new Timer();
		
		TimerTask task = new DefaultTimerTask();
		
		timer.schedule(task, new Date());
	}
	
	public static void executionInterval(){
		Timer timer = new Timer();
		
		TimerTask task = new DefaultTimerTask();
		
		timer.schedule(task, 1000,1000);
	}
	
	public static void executionIntervalAtSpecifiedTime(){
		Timer timer = new Timer();
		
		TimerTask task = new DefaultTimerTask();
		
		timer.schedule(task, new Date(),1000);
	}
	
	public static void executionFixedInterval(){
		Timer timer = new Timer();
		
		TimerTask task = new DefaultTimerTask();
		
		timer.scheduleAtFixedRate(task, 1000, 1000);
	}
	
	public static void executionFixedIntervalSpecifiedTime(){
		Timer timer = new Timer();
		
		TimerTask task = new DefaultTimerTask();
		
		timer.scheduleAtFixedRate(task, new Date(), 1000);
	}
	
	
	public static void main(String[] args) {
//		executionOnce();
//		executionAtSpecifiedTime();
//		executionInterval();
//		executionIntervalAtSpecifiedTime();
//		executionFixedInterval();
		executionFixedIntervalSpecifiedTime();
	}
}

 

分享到:
评论

相关推荐

    HBase-Elasticsearch 数据同步工具

    jdk timer定时全量同步 org.frameworkset.elasticsearch.imp.HBase2ESFullDemo jdk timer定时增量同步 org.frameworkset.elasticsearch.imp.HBase2ESScrollTimestampDemo jdk timer定时增量同步(简化demo,hbase1...

    spring + jdk TimerTask定时器

    // 使用JDK的Timer调度任务 } } ``` ### 触发策略 在Spring中,你可以通过`Trigger`来决定任务何时触发。虽然Spring不直接支持`TimerTask`的触发,但可以自定义一个`Trigger`实现来模拟`TimerTask`的行为。 ```...

    spring timer、quartz俩种任务调度

    Spring框架提供了对定时任务的强大支持,包括内置的`Spring Timer`和集成第三方的`Quartz Scheduler`。这两种方式都允许开发者灵活地安排和执行周期性任务。下面我们将深入探讨这两种任务调度器及其在Spring中的使用...

    Jdk的Timer 实现定时器

    Java开发工具包(JDK)中的`Timer`类是一个实用工具类,用于调度周期性或一次性任务。在Java编程中,我们经常需要执行一些任务,这些任务需要在特定的时间点或者按照一定的间隔重复执行,例如更新进度条、心跳检测、...

    Spring 任务调度

    - **JDK Timer**:提供了`Timer`和`TimerTask`两个类。`TimerTask`是一个抽象类,实现了`Runnable`接口,用于定义需要调度的任务。`Timer`类则用于管理和调度这些任务,通过`schedule`方法来安排任务的执行。 - **...

    spring2 计划任务

    2. **基于Java的Timer和TimerTask**:虽然Spring更推荐使用Quartz,但同时它也支持使用JDK自带的`java.util.Timer`和`java.util.TimerTask`。这种方式相对简单,适用于简单的定时任务需求。`Timer`类用于创建定时...

    HBase-Elasticsearch数据同步1

    - 示例应用程序包含了使用JDK Timer实现的定时全量同步(`HBase2ESFullDemo`)和增量同步(`HBase2ESIncrementalDemo`),这些工具可以帮助快速构建和发布数据导入工具。 4. **特性与优势** - Bboss的数据同步工具...

    Spring+3.x企业应用开发实战光盘源码(全)

     第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。  第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。  第15章:对...

    spring+jdk定时器

    使用JDK定时器的基本步骤包括创建`Timer`对象,然后使用`schedule(TimerTask task, long delay)`或`schedule(TimerTask task, Date firstTime, long period)`方法来安排任务。`TimerTask`是可重用的异步任务,你需要...

    Spring排程(Scheduling)技术

    JDK内置的`java.util.Timer`类提供了一个简单的定时任务调度机制。Timer类主要用于执行一次性的任务或周期性任务,但它的功能相对有限,不适用于处理复杂的时间调度需求。例如,下面是一个使用Timer创建简单定时任务...

    Java 高频Spring面试

    3. Spring 利用了已有的技术,比如 ORM 框架、logging 框架、J2EE、Quartz 和 JDK Timer,以及其他视图技术。 4. Spring 框架是按照模块的形式来组织的。 5. 要测试一项用 Spring 开发的应用程序十分简单,因为测试...

    陈开雄 Spring+3.x企业应用开发实战光盘源码.zip

     第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。  第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。  第15章:...

    29道常见的Spring面试题!.pdf

    Spring的设计模式使得它易于与其他技术和库集成,如ORM框架、日志框架、J2EE、Quartz和JDK Timer等。 使用Spring框架的主要好处在于: 1. 依赖注入(Dependency Injection,DI)简化了对象之间的关系,使得代码更...

    25个经典的Spring面试问答.docx

    3. 它能够与多种技术集成,如ORM框架、日志框架、J2EE、Quartz和JDK Timer等。 4. 模块化的结构允许开发者按需选择使用,避免了不必要的复杂性。 5. 测试友好:Spring提供内置的测试支持,简化单元测试和集成测试。 ...

    Spring.3.x企业应用开发实战(完整版).part2

    13.4.2 Spring对JDK Timer的支持 13.5 Spring对JDK 5.0 Executor的支持 13.5.1 了解JDK 5.0的Executor 13.5.2 Spring对Executor所提供的抽象 13.6 实际应用中的任务调度 13.6.1 如何产生任务 13.6.2 任务调度对应用...

    Spring3.x企业应用开发实战(完整版) part1

    13.4.2 Spring对JDK Timer的支持 13.5 Spring对JDK 5.0 Executor的支持 13.5.1 了解JDK 5.0的Executor 13.5.2 Spring对Executor所提供的抽象 13.6 实际应用中的任务调度 13.6.1 如何产生任务 13.6.2 任务调度对应用...

    Spring 2.0 开发参考手册

    7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”advisor 7.6. 简化代理定义 7.7. 使用ProxyFactory通过编程创建AOP代理 7.8. 操作被通知对象 7.9. 使用“自动...

    spring chm文档

    7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”advisor 7.6. 简化代理定义 7.7. 使用ProxyFactory通过编程创建AOP代理 7.8. 操作被通知对象 7.9. 使用“自动...

Global site tag (gtag.js) - Google Analytics