最近,被女人烦得不行!一会儿喊我商量投资,一会儿喊我商量买房的,真不知道要干嘛,鼻子被她牵得不轻!看看这房价,罢了罢了,等跌,呵呵呵!
这家伙跑到上海工作了,没想还这么的麻烦,工作忙了一周了,现在也有个闲工夫来学习了,学习以前看过但没有用过,没有总结过,又忘记了的东东!
今天就从最基本的 JDK Timer 调度开始吧,姑且认为是一计时器吧。学一点,记一点嘛,这也是一种积累学习的方法。钱,是个好东西,但是呢,现在才二十四五岁的把工资看得太重有些过分,现在哪怕一个月存个两三千,以后要是咱Java底子更硬了,一个月的工资就顶得上几个月的了,所以,现在存个毛钱呀,学好、吃好、玩好就OK了!
说起这个调度呢,那我们在做项目、日常生活中的应用就有些广了,今天说的呢,是我们JDK里自带的一种很简单的实现:java.util.Timer和java.util.TimerTask,望文生义:
1、TimerTask:就是一任务,建立的要执行的任务;
TimerTask是一抽象类,所以,要建立多复杂的任务,就看你的了,实现run()抽象方法,定义你的任务,他呢,还有另外的两个方法,cancel():取消此计时器任务、scheduledExecutionTime():返回此任务这次实际执行的安排执行时间。
2、Timer:这个呢,就有点像个总指挥了,而且还是个很有威信的指挥,线程安全,存在多个没有问题,照收。专职指挥TimerTask里定义的任务叫他去做。到底是怎么指挥TimerTask呢,这里呢,他就有多个任务安排的schedule()方法了,他有多个重载的版本,反正宗旨就是一个,叫TimerTask干活,就是个怎么干的问题了。也就是针对某一个TimerTask,并设置规则让TimerTask去完成任务。
大体上呢,我个人理解就这么样的个意思,OK再来看看这两个的具体实现吧:
1、先定义个也许重新执行的任务吧:
package com.cui.hourse.jdkTimerDemo;
import java.util.Date;
import java.util.TimerTask;
public class SimpleTimerTask extends TimerTask {
private int count = 1;//计数
@Override
public void run() {
System.out.println("execute task now");
Date exeTime = new Date(scheduledExecutionTime());
System.out.println("本次任务安排执行的时间为: "+exeTime);
if(++count>5){
System.out.println("cancle...");
cancel();//取消任务
}
}
}
2、总指挥怎么安排工作任务:
package com.cui.hourse.jdkTimerDemo;
import java.util.Timer;
import java.util.TimerTask;
public class TimerRunner {
public static void main(String[]args){
Timer timer = new Timer();//指挥登场了
TimerTask task = new SimpleTimerTask();//司职任务
/**
* 总管让这个task,过两秒后,每隔5秒执行一次,直到五次!
* */
timer.schedule(task, 2000L, 5000L);
}
}
3、运行看结果:
Showtime now: Fri Apr 23 23:05:01 CST 2010
execute task now
本次任务安排执行的时间为: Fri Apr 23 23:05:03 CST 2010
execute task now
本次任务安排执行的时间为: Fri Apr 23 23:05:08 CST 2010
execute task now
本次任务安排执行的时间为: Fri Apr 23 23:05:13 CST 2010
execute task now
本次任务安排执行的时间为: Fri Apr 23 23:05:18 CST 2010
execute task now
本次任务安排执行的时间为: Fri Apr 23 23:05:23 CST 2010
cancle...
OK,搞定!
分享到:
相关推荐
总的来说,`Timer`和`TimerTask`提供了一种简单的方法来实现定时任务,但需要注意其实时性和调度的局限性。在复杂的应用场景中,你可能需要考虑使用更强大的调度库,如`Quartz`或`ScheduledExecutorService`,它们...
Java开发工具包(JDK)中的`Timer`类是一个实用工具类,用于调度周期性或一次性任务。在Java编程中,我们经常需要执行一些任务,这些任务需要在特定的时间点或者按照一定的间隔重复执行,例如更新进度条、心跳检测、...
`Spring Timer`是Spring框架提供的一个简单任务调度工具,它基于Java的`java.util.Timer`类。通过`@Scheduled`注解,开发者可以在Spring应用上下文中声明一个方法为定时任务。例如: ```java import org.spring...
// 使用JDK的Timer调度任务 } } ``` ### 触发策略 在Spring中,你可以通过`Trigger`来决定任务何时触发。虽然Spring不直接支持`TimerTask`的触发,但可以自定义一个`Trigger`实现来模拟`TimerTask`的行为。 ```...
JDK定时器适合简单的定时需求,而Spring的`@Scheduled`注解适用于大多数场景,Quartz则在需要更高级特性和复杂调度时成为首选。理解这些工具的工作原理和使用方法,将有助于在实际开发中有效地实现和管理定时任务。
总结来说,Spring的任务调度通过集成JDK的Timer或更高级的Quartz库,为开发者提供了灵活且强大的后台任务执行能力。无论是简单的定时任务还是复杂的调度需求,都能得到很好的满足。在设计和实现任务调度时,需要注意...
总结,Timer适合简单的定时任务需求,而Quartz则适用于需要更复杂调度策略的场景。选择哪种工具取决于项目的需求和资源限制。在实际开发中,可以根据业务需求的复杂程度和维护的便捷性来权衡这两个选项。
8. Timer机制的优缺点:Timer机制的优点是简单易用、线程安全,但也存在一些缺点,如任务间相互影响、任务执行效率低下等问题。 Java定时调度机制是Java中的一种重要机制,它提供了多种定时调度方式,包括Timer机制...
JDK1.3的`Timer`和`TimerTask`虽然可以实现简单的调度,但不适用于复杂的调度需求。JDK1.5引入的`ScheduledExecutorService`解决了`Timer`的一些问题,但依然不是完整的作业调度器。此外,还有诸如Quartz、Flux ...
TimerTask可以被Timer调度执行,它可以执行一次或多次,具体取决于Timer的调度方式。 Timer和TimerTask的关系 Timer和TimerTask是紧密相关的,Timer是调度者,TimerTask是被调度者。Timer可以调度多个TimerTask,...
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz框架包含了调度器监听、作业和触发器监听。...Quartz在功能上远远超越了JDK自带的Timer,很好很强大!
JDK 6.0还引入了`ExecutorService`和`Future`,它们提供了更灵活的线程管理和任务调度。 3. **Swing或AWT**:如果倒计时程序需要用户界面,可以使用Java的GUI库,如Swing或AWT。`javax.swing.Timer`是一个很好的...
总的来说,Spring的任务调度功能为开发者提供了强大的定时任务解决方案,无论是简单的JDK Timer还是复杂的Quartz,都能满足不同的需求。通过学习相关的源码和实践,我们可以更好地理解和利用这些工具,提升应用的...
// 取消所有由该Timer调度的任务 ``` 在更复杂的场景中,你可能需要管理多个`TimerTask`,或者根据特定条件动态地添加、移除任务。`Timer`类提供了灵活的API来支持这些操作,使得在Java应用中实现定时功能变得相对...
Java Timer 类是一个调度工具,用于计划将来在后台线程中执行的任务。它的主要用途是在给定的时间点或按特定的时间间隔执行任务。Timer 接受一个 TimerTask 的实例作为参数,TimerTask 是一个抽象类,需要子类化并...
JDK内置的`java.util.Timer`类提供了一个简单的定时任务调度机制。Timer类主要用于执行一次性的任务或周期性任务,但它的功能相对有限,不适用于处理复杂的时间调度需求。例如,下面是一个使用Timer创建简单定时任务...
总结来说,JDK 自带的 `Timer` 类提供了一种简单而灵活的方式来安排任务执行。通过使用 `Timer` 和 `TimerTask`,开发者可以创建一次性或周期性的任务,并控制它们在后台线程中的执行。理解这些方法及其工作原理对于...
在Spring中,使用JDK的Timer类库来做任务调度功能不是很方便,关键它不可以象cron服务那样可以指定具体年、月、日、时和分的时间。你只能将时间通过换算成微秒后传给它。如任务是每天执行一次,则需要在spring中如下...
总结起来,`Timer` 和 `TimerTask` 提供了一种简单的方式在Java中实现定时任务,无论是单次执行还是周期性执行,都能方便地进行调度。但需要注意的是,由于 `Timer` 是基于单线程模型的,如果一个 `TimerTask` 执行...
在JDK 1.3及以后的版本中,`java.util.Timer`类提供了基础的定时任务支持。不过,`Timer`类的功能相对有限,无法精确地在特定时间点执行任务,比如设置每天特定时间执行的任务。 Quartz是一个强大且灵活的开源作业...