- 浏览: 622515 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (334)
- java core (12)
- struts2.x (2)
- spring (3)
- hibernate (8)
- jpa (6)
- maven (2)
- osgi (5)
- eclipse (4)
- struts2.x+spring2.x+hibernate 整合 (5)
- ebs (0)
- html (0)
- vaadin (1)
- css (0)
- jquery (0)
- javascript (0)
- svn (1)
- cvs (0)
- axas2.x (0)
- eclipse+maven (9)
- annotation (0)
- 基于OSGi的动态化系统搭建 (1)
- notenet (1)
- jboss eclipse (4)
- eclipse工具 (4)
- jdk1.6+maven3.0.3+nuxeo+svn+felix+cxf+spring+springDM (6)
- spring dm (1)
- Nexus介绍 (1)
- proxool listener (0)
- oracle (4)
- mysql (8)
- 搭建你的全文检索 (1)
- hibernatehibernatehibernate (0)
- cvsearchcvsearch (0)
- mycvseach (0)
- asdfasdfasdf (0)
- propertiey (0)
- hibernate annotation (0)
- libs (0)
- icam (2)
- start 数据库配置 (0)
- jboss (1)
- 让Eclipse启动时显示选择workspace的对话框 (1)
- table表头固定 (1)
- s2s3h4 (0)
- leaver (0)
- mycvsaerchddd (0)
- 关于jboss5.0.1部署 (4)
- bookmarks (0)
- PersistenceUnitDeployment (0)
- mycom (0)
- HKEY_CURRENT_USER = &H80000001 (0)
- syspath (1)
- css div (1)
- Dreamweaver CS5 (0)
- generate (0)
- mysql查看表结构命令 (1)
- LOG IN ERROR EMAIL TO SB (0)
- struts2 handle static resource (1)
- jsf (2)
- log4j (1)
- jbpm4.4 (2)
- down: jbpm4.4 (1)
- jstl1.2 (1)
- spring annotation (1)
- java design pattern (1)
- cache (1)
- ehcache (1)
- 11111 (0)
- myge (0)
- pom.xml (0)
- springquartz (0)
- OpenStack (9)
- hadoop (2)
- nginx (1)
- hadoop openstack (1)
- os (1)
- hadoop-2.6.0 zookeeper-3.4.6 hbase-0.98.9-hadoop2 集群 (5)
- hadoop2.7.0 ha Spark (2)
- tess (0)
- system (1)
- asdf (0)
- hbase (2)
- hbase create table error (1)
- ekl (1)
- gitignore (1)
- gitlab-ci.yml (1)
- shell (1)
- elasticsearch (2)
- Azkaban 3.0+ (1)
- centos用命令 (1)
- hive (1)
- kafka (1)
- CaptureBasic (0)
- CentOS7 (1)
- dev tools (1)
- README.md (1)
- Error (1)
- teamviewerd.service (1)
- scala (1)
- spark (1)
- standard (1)
- gitlab (1)
- IDEA (0)
- ApplicationContext (1)
- 传统数仓 (1)
- redis install (1)
- MYSQL AND COLUME (1)
- java版本选择 (1)
- hue (1)
- npm (1)
- es (1)
- 版本管理 (1)
- 升级npm版本 (1)
- git (1)
- 服务器参数设置 (1)
- 调大 IDEA 编译内存大小 (0)
- CentOS8安装GitLab (1)
- gitlab安装使用 (1)
最新评论
-
ssydxa219:
vim /etc/security/limits.confvi ...
ekl -
Gamehu520:
table中无数据
hbase 出现的问题 -
Xleer0102:
为什么都是只有问没有答,哭晕在厕所
hbase 出现的问题 -
jiajiao_5413:
itext table -
CoderDream:
不完整,缺com.tcs.org.demostic.pub.u ...
struts2.3.1.1+hibernate3.6.9Final+spring3.1.0+proxool+maven+annotation
Implementing and scheduling a task to be executed by a timer
1) Implement a custom subclass of TimerTask. The run method contains the code that performs the task.
class RemindTask extends TimerTask {
public void run() {
System.out.println("Time up!");
System.exit(0);
}
}
2) Create a thread by instantiating the Timer class
Timer timer = new timer();
3) Instantiate the timer task object(new RemindTask())
RemindTask task = new RemindTask();
4) Schedule the timer task for execution.
(1) execute the task after special milliseconds delay.
timer.schedule(task,5*1000);
(2) specify the time when the task suould execute.
//execute the task at 11:01 p.m
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,23);
calendar.set(Calendar.MINUTE,1);
calendar.set(Calendar.SECOND,0);
Date time = calendar.getTime();
timer.schedule(task,time);
Stopping Timer Threads
By defaulst, aprogram keeps running as long as its timer threads are running. There is four ways to terminate a timer thread
1) Invoke cancel on the timer.(timer.cancel())
2) Make the timer's thread a daemon(后台), by creating the timer like
this: new Timer(true). If the only threads left in the program are
daemon threads, the program exits.
3) After all the timer
scheduleds tasks have finished executing,remove all references to the
Timer object. the timer thread will terminate.
4) Invoke the System.exit method, which makes the entire program and all its threads exit.
Performing a Task repeatedly
There is four Timer method to perform a task repeatedly
* schedule(TimerTask task, long delay, long period)
Schedules the specified task for repeated fixed-delay execution,
beginning after the specified delay. Subsequent executions take place at
approximately regular intervals separated by the specified period.
执行重复的任务,第一次在延时时间后执行,往后的以特定的时间间隔执行
timer.schedule(new RemindTask(),3*1000,1*1000)
RemindTask任务将会在3秒后执行,以后将会以1秒的间隔重复执行
* schedule(TimerTask task, Date time, long period)
执行重复的任务,第一次在特定的时间执行,往后的以特定的时间间隔执行
* scheduleAtFixedRate(TimerTask task, long delay, long period)
Schedules the specified task for repeated fixed-rate execution,
beginning after the specified delay. Subsequent executions take place at
approximately regular intervals, separated by the specified period.
以固定的延时执行重复的任务,首次执行在特定的延时之后,以后的执行发生在特定的时间间隔之后
temer.scheduleAtFixedRate(new RemindTask(),3*1000,1*1000)
* scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
执行重复的任务,第一次在特定的时间执行,往后的以特定的时间间隔执行
schedule和scheduleAtFixedRate的区别在于,schedule以固定的相对时间间隔执行,如果某一次执行被延时了,往后的执行
的执行时间也会相对延时;而scheduleAtFixedRate是以绝对的时间间隔执行,如果某一次执行被延时,它的后一次执行的延时将会缩短。
/**
* TimerTask第一次执行时间与被调度之间的间隔
*/
public static final int DELAY = 1000 * 10;
/**
* TimerTask循环执行之间的时间间隔10s
*/
public static final int PERIOD_BETWEEN_LOOP = 1000 * 10;
Calendar calendar = GregorianCalendar.getInstance();
calendar.set(Calendar.MINUTE, 50);
calendar.set(Calendar.SECOND, 0);
Date startTime = calendar.getTime();
TimerTask task = new TimerTaskImpl();
Timer timer = new Timer();
//测试时需要逐一测试,否则会出错
//java.lang.IllegalStateException: Task already scheduled or cancelled
//执行一次,startTime在当前时间之前则马上执行
//timer.schedule(task, startTime);
//执行一次
//timer.schedule(task, DELAY);
//startTime时间在当前时间之后,
//则从startTime开始循环执行,即使某个时间间隔中由于某种问题间隔时间>10S,下一次间隔时间也仍为10S
//Sat Mar 19 22:50:00 CST 2011
//Sat Mar 19 22:50:11 CST 2011
//Sat Mar 19 22:50:21 CST 2011
//startTime时间在当前时间之前,
//则从当前时间开始循环执行N次
//Sat Mar 19 22:57:53 CST 2011
//Sat Mar 19 22:58:04 CST 2011
//Sat Mar 19 22:58:14 CST 2011
//timer.schedule(task, startTime, PERIOD_BETWEEN_LOOP);
//从被调度的时间开始计时,DELAY之后第一次执行,之后每隔PERIOD_BETWEEN_LOOP执行一次
//对时间间隔超时的处理方式与上一方法一致
//timer.schedule(task, DELAY, PERIOD_BETWEEN_LOOP);
//startTime时间在当前时间之后,
//则从startTime开始循环执行,如果某个时间间隔中由于某种问题间隔时间>10S,下一次间隔时间则会<10s,从而使频率不变
//startTime时间在当前时间之前,
//则立即执行(currentTime-startTime) / PERIOD_BETWEEN_LOOP + 1次,然后以上述方式进行循环
timer.scheduleAtFixedRate(task, startTime, PERIOD_BETWEEN_LOOP);
//从被调度的时间开始计时,DELAY之后第一次执行,之后每隔PERIOD_BETWEEN_LOOP执行一次
//对时间间隔超时的处理方式与上一方法一致
//timer.scheduleAtFixedRate(task, DELAY, PERIOD_BETWEEN_LOOP);
发表评论
-
idea code
2019-10-14 15:35 324MNQ043JMTU-eyJsaWNlbnNlSWQiOiJN ... -
idea
2018-04-01 07:29 0http://idea.iteblog.com/ ... -
hashmap和hashtable
2012-12-20 15:04 972Java中hashmap和hashtable的区别 ... -
synchronized
2012-11-01 14:29 01.把 synchronized (i) { 放在 while ... -
sdfasdfasdf
2012-10-19 18:12 0Hi, this is jar, it is really ... -
syspath
2012-09-21 13:42 1203Locale locale = Locale.getDefau ... -
gc---java
2012-06-28 10:38 0JVM内存模型中分两大块 ... -
JAVA_OPTS
2012-06-16 21:40 0set JAVA_OPTS=%JAVA_OPTS% -Xms5 ... -
daemon thread
2012-03-09 22:04 1175用户线程:是你自己写的,可以手工调用;守护线程(Daemon ... -
集合的区别总结
2012-03-07 10:32 1305hashMap和hashTable的几点区别 1. ... -
ClassLoader
2012-02-28 17:53 1217ClassLoader 类加载器 ... -
synchronized 规则
2012-02-27 11:05 0synchronized 方法控制对类 ... -
JDK1.6中文版的对HashMap
2012-02-27 10:28 1325以下是 JDK1.6 中 ... -
JDK1.6中文版的对HashMap
2012-02-27 10:27 965以下是 JDK1.6 中文版的对 HashMap 的具体介绍 ... -
HashMap
2012-02-27 10:04 1004Map map = new HashMap(); ... -
Collection
2012-02-27 09:59 890线性表,链表,哈希表是常用的数据结构,在进行Java开发时,J ... -
until
2012-02-27 08:04 0Until 1 1. Be at the star ... -
Java Thread
2011-12-30 10:11 101971、线程概述 几乎所有的操作系统都支持同时运行 ...
相关推荐
Java开发工具包(JDK)中的`Timer`类是一个实用工具类,用于调度周期性或一次性任务。在Java编程中,我们经常需要执行一些任务,这些任务需要在特定的时间点或者按照一定的间隔重复执行,例如更新进度条、心跳检测、...
public ScheduledFuture<?> schedule(Runnable task, Trigger trigger) { // 使用JDK的Timer调度任务 } } ``` ### 触发策略 在Spring中,你可以通过`Trigger`来决定任务何时触发。虽然Spring不直接支持`...
使用JDK定时器的基本步骤包括创建`Timer`对象,然后使用`schedule(TimerTask task, long delay)`或`schedule(TimerTask task, Date firstTime, long period)`方法来安排任务。`TimerTask`是可重用的异步任务,你需要...
- 调用了`timer.schedule(new MyTask(), 1000, 2000)`来安排任务,在1秒后首次执行,并且每2秒重复执行一次。 - 使用了一个无限循环来等待用户的输入,如果用户输入字符`c`,则调用`timer.cancel()`来取消所有的定时...
Java中的JDK定时器是基于`java.util.Timer`和`java.util.TimerTask`这两个类实现的,它们提供了在特定时间点或周期性地执行任务的能力。`Timer`类是一个抽象的基类,它负责调度任务的执行,而`TimerTask`则是一个...
- **安排任务**:`schedule(TimerTask task, long delay)`、`schedule(TimerTask task, Date time)`、`schedule(TimerTask task, long initialDelay, long period)`以及`schedule(TimerTask task, Date firstTime, ...
除了上述方法,JDK 5+还引入了一个新的方法`scheduleAtFixedRate(TimerTask task, long delay, long period)`。这个方法和`schedule`类似,但不同之处在于它会尽力确保任务按照固定的频率执行,即使前一次执行因为...
schedule方法可以指定任务的执行时间和频率,例如schedule(task, delay)方法将任务task执行在delay毫秒后,schedule(task, delay, period)方法将任务task执行在delay毫秒后,并以period毫秒为周期重复执行。...
JDK 自带的定时器(`java.util.Timer` 类)是一种强大的工具,允许开发者安排任务在后台线程中按特定时间或周期性地执行。它为应用程序提供了灵活的调度功能,比如延迟执行、周期性执行等。下面我们将深入探讨 `...
- **JDK Timer**:提供了`Timer`和`TimerTask`两个类。`TimerTask`是一个抽象类,实现了`Runnable`接口,用于定义需要调度的任务。`Timer`类则用于管理和调度这些任务,通过`schedule`方法来安排任务的执行。 - **...
timer.schedule(myTask, 1000, 2000); // 在1秒后执行,每2秒执行一次 // 可以通过取消任务来停止特定的 TimerTask myTask.cancel(); // 或者通过取消 Timer 来停止所有任务 timer.cancel(); } static ...
4. 周期性运行:Timer.schedule(TimerTask task,Date firstTime,long period) 从firstTime开始每隔period毫秒执行一次任务。 5. schedule(TimerTask task,long delay) 当前的时间为参考时间,在此时间基础上延迟制定...
在Java中,`java.util.Timer` 和 `java.util.TimerTask` 类提供了这样的功能,它们是JDK自带的,不需要引入额外的库。 1. **Timer类**: `Timer` 类是一个线程类,它可以安排在将来的某个时间点执行一个或多个任务...
java8集合源码定时器和定时器任务 定时器是线程调度任务以在后台...schedule( new TimerTask () { @Override public void run () { System . out . println( " Run task 3 seconds after application startup " ); } },
- 创建一个 `Timer` 对象后,你可以通过 `schedule(TimerTask task, long delay)` 或 `schedule(TimerTask task, Date firstTime, long period)` 方法来安排任务。`delay` 参数指定了任务延迟执行的时间,`period` ...
然后,通过调用`Timer`的`schedule(TimerTask task, long delay)`方法,可以安排一个任务在延迟`delay`毫秒后执行。如果要周期性执行,可以使用`schedule(TimerTask task, long initialDelay, long period)`,这个...
本篇文章将深入探讨Java中实现定时任务的方法,包括使用JDK内置的`Timer`和`TimerTask`类。 首先,`Timer`类是Java中实现定时任务的核心,它提供了一个后台线程来调度和执行定时任务。`Timer`有四个构造函数,但...
本篇将详细讲解如何使用JDK中的`Timer`类和`TimerTask`类来实现定时任务。 1. `Timer`类 `Timer`是Java提供的一个定时器工具,它可以安排一个或多个任务在后台线程中执行。`Timer`类具有线程安全性,允许多个线程...
Java Timer类提供了`schedule(TimerTask task, long delay)`和`schedule(TimerTask task, Date firstTime, long period)`等方法来安排任务的执行。TimerTask是一个抽象类,你需要创建它的子类并实现run()方法,该...