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(); } }
相关推荐
jdk timer定时全量同步 org.frameworkset.elasticsearch.imp.HBase2ESFullDemo jdk timer定时增量同步 org.frameworkset.elasticsearch.imp.HBase2ESScrollTimestampDemo jdk timer定时增量同步(简化demo,hbase1...
// 使用JDK的Timer调度任务 } } ``` ### 触发策略 在Spring中,你可以通过`Trigger`来决定任务何时触发。虽然Spring不直接支持`TimerTask`的触发,但可以自定义一个`Trigger`实现来模拟`TimerTask`的行为。 ```...
Spring框架提供了对定时任务的强大支持,包括内置的`Spring Timer`和集成第三方的`Quartz Scheduler`。这两种方式都允许开发者灵活地安排和执行周期性任务。下面我们将深入探讨这两种任务调度器及其在Spring中的使用...
Java开发工具包(JDK)中的`Timer`类是一个实用工具类,用于调度周期性或一次性任务。在Java编程中,我们经常需要执行一些任务,这些任务需要在特定的时间点或者按照一定的间隔重复执行,例如更新进度条、心跳检测、...
- **JDK Timer**:提供了`Timer`和`TimerTask`两个类。`TimerTask`是一个抽象类,实现了`Runnable`接口,用于定义需要调度的任务。`Timer`类则用于管理和调度这些任务,通过`schedule`方法来安排任务的执行。 - **...
2. **基于Java的Timer和TimerTask**:虽然Spring更推荐使用Quartz,但同时它也支持使用JDK自带的`java.util.Timer`和`java.util.TimerTask`。这种方式相对简单,适用于简单的定时任务需求。`Timer`类用于创建定时...
- 示例应用程序包含了使用JDK Timer实现的定时全量同步(`HBase2ESFullDemo`)和增量同步(`HBase2ESIncrementalDemo`),这些工具可以帮助快速构建和发布数据导入工具。 4. **特性与优势** - Bboss的数据同步工具...
第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。 第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。 第15章:对...
使用JDK定时器的基本步骤包括创建`Timer`对象,然后使用`schedule(TimerTask task, long delay)`或`schedule(TimerTask task, Date firstTime, long period)`方法来安排任务。`TimerTask`是可重用的异步任务,你需要...
JDK内置的`java.util.Timer`类提供了一个简单的定时任务调度机制。Timer类主要用于执行一次性的任务或周期性任务,但它的功能相对有限,不适用于处理复杂的时间调度需求。例如,下面是一个使用Timer创建简单定时任务...
3. Spring 利用了已有的技术,比如 ORM 框架、logging 框架、J2EE、Quartz 和 JDK Timer,以及其他视图技术。 4. Spring 框架是按照模块的形式来组织的。 5. 要测试一项用 Spring 开发的应用程序十分简单,因为测试...
第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。 第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。 第15章:...
Spring的设计模式使得它易于与其他技术和库集成,如ORM框架、日志框架、J2EE、Quartz和JDK Timer等。 使用Spring框架的主要好处在于: 1. 依赖注入(Dependency Injection,DI)简化了对象之间的关系,使得代码更...
3. 它能够与多种技术集成,如ORM框架、日志框架、J2EE、Quartz和JDK Timer等。 4. 模块化的结构允许开发者按需选择使用,避免了不必要的复杂性。 5. 测试友好:Spring提供内置的测试支持,简化单元测试和集成测试。 ...
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 任务调度对应用...
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 任务调度对应用...
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. 使用“自动...
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. 使用“自动...