所有类型的 Java 应用程序一般都需要计划重复执行的任务
Timer类是用来执行任务的类,它接受一个TimerTask做参数
java.util.Timer 和 java.util.TimerTask ,它们使程序员可以很容易地计划简单的任务
Timer
Timer最常用的是schedule执行任务的模式,,它可以以两种方式执行任务:
1:在某个时间(Data),2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率.
看个简单的例子:
- importjava.io.IOException;
- importjava.util.Timer;
- publicclassTimerTest{
- publicstaticvoidmain(String[]args){
- Timertimer=newTimer();
- timer.schedule(newJob(),5000,10000);//在5秒后执行此任务,每次间隔60秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
- /*
- //这个是用来停止此任务的,否则就一直循环执行此任务了
- while(1==1){
- try{
- if(2==2){
- timer.cancel();//使用这个方法退出任务
- }
- }catch(IOExceptione)
- e.printStackTrace();
- }*/
- }
- staticclassJobextendsjava.util.TimerTask{
- @Override
- publicvoidrun(){
- //TODOAuto-generatedmethodstub
- System.out.println("so...easy!");
- }
- }
- }
- importjava.io.IOException;
- importjava.util.Timer;
- publicclassTimerTest{
- publicstaticvoidmain(String[]args){
- Timertimer=newTimer();
- timer.schedule(newJob(),5000,10000);//在5秒后执行此任务,每次间隔60秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
- /*
- //这个是用来停止此任务的,否则就一直循环执行此任务了
- while(1==1){
- try{
- if(2==2){
- timer.cancel();//使用这个方法退出任务
- }
- }catch(IOExceptione)
- e.printStackTrace();
- }*/
- }
- staticclassJobextendsjava.util.TimerTask{
- @Override
- publicvoidrun(){
- //TODOAuto-generatedmethodstub
- System.out.println("so...easy!");
- }
- }
- }
import java.io.IOException; import java.util.Timer; public class TimerTest { public static void main(String[] args){ Timer timer = new Timer(); timer.schedule(new Job(), 5000, 10000);//在5秒后执行此任务,每次间隔60秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务. /* //这个是用来停止此任务的,否则就一直循环执行此任务了 while(1==1){ try { if(2==2){ timer.cancel();//使用这个方法退出任务 } } catch (IOException e) e.printStackTrace(); } */ } static class Job extends java.util.TimerTask{ @Override public void run() { // TODO Auto-generated method stub System.out.println("so...easy!"); } } } import java.io.IOException; import java.util.Timer; public class TimerTest { public static void main(String[] args){ Timer timer = new Timer(); timer.schedule(new Job(), 5000, 10000);//在5秒后执行此任务,每次间隔60秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务. /* //这个是用来停止此任务的,否则就一直循环执行此任务了 while(1==1){ try { if(2==2){ timer.cancel();//使用这个方法退出任务 } } catch (IOException e) e.printStackTrace(); } */ } static class Job extends java.util.TimerTask{ @Override public void run() { // TODO Auto-generated method stub System.out.println("so...easy!"); } } }
TimerTask 刚才在代码里提到了 TimerTask 类。TimerTask类里有一个抽象方法run(),我们把任务写到run()方法里,或由run()执行其他方法.
完整的代码:
- publicclassTimerTest{
- publicstaticvoidmain(String[]args){
- intdelay=5000;//延迟5秒
- Timertimer=newTimer();//生成一个Timer对象
- NewTaskmyTask=newNewTask();//初始化我们的任务
- timer.schedule(yourTask,delay);//还有其他重载方法...
- }
- }
- classNewTaskextendsTimerTask{//继承TimerTask类
- publicvoidrun(){
- System.out.println("printing!");
- }
- }
- publicclassTimerTest{
- publicstaticvoidmain(String[]args){
- intdelay=5000;//延迟5秒
- Timertimer=newTimer();//生成一个Timer对象
- NewTaskmyTask=newNewTask();//初始化我们的任务
- timer.schedule(yourTask,delay);//还有其他重载方法...
- }
- }
- classNewTaskextendsTimerTask{//继承TimerTask类
- publicvoidrun(){
- System.out.println("printing!");
- }
- }
public class TimerTest{ public static void main(String[] args){ int delay=5000;//延迟5秒 Timer timer=new Timer();//生成一个Timer对象 NewTask myTask=new NewTask();//初始化我们的任务 timer.schedule(yourTask,delay);//还有其他重载方法... } } class NewTask extends TimerTask{//继承TimerTask类 public void run(){ System.out.println("printing!"); } } public class TimerTest{ public static void main(String[] args){ int delay=5000;//延迟5秒 Timer timer=new Timer();//生成一个Timer对象 NewTask myTask=new NewTask();//初始化我们的任务 timer.schedule(yourTask,delay);//还有其他重载方法... } } class NewTask extends TimerTask{//继承TimerTask类 public void run(){ System.out.println("printing!"); } }
这样这个程序就会在五秒钟后输出 printing!
Timer的功能是相当强大的,若要详细了解,可以查看帮助文档.完整案例!
现在大家看一下我写的关于实现LED滚屏显示动态信息!
web 监听:
- packagecom.ving.xzfw.led;
- importjava.util.Timer;//定时器类
- importjavax.servlet.ServletContextEvent;
- importjavax.servlet.ServletContextListener;
- importjavax.servlet.ServletContext;
- importorg.apache.log4j.Logger;
- importcom.ving.xzfw.util.GetInformation;
- //importcom.ving.xzfw.lwsp.GetConfigInfor;
- publicclassLEDListenerimplementsServletContextListener{
- privateTimertimer=null;
- privateLoggerlog=Logger.getLogger(getClass());
- //GetconfigInforconfig=newGetconfigInfor();
- GetInformationgetInfo=newGetInformation("bpelConfig.properties");
- IntegerrunTime=Integer.parseInt(getInfo.getProperty("led.TimingRunTime"));
- StringfileRealPath="";
- StringtemplePath="";
- publicvoidcontextInitialized(ServletContextEventevent){
- //在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能
- ServletContextcontext=event.getServletContext();
- fileRealPath=context.getRealPath("")
- +System.getProperty("file.separator")+"LEDFile"
- +System.getProperty("file.separator");
- templePath=context.getRealPath("")
- +System.getProperty("file.separator")+"led"
- +System.getProperty("file.separator");
- timer=newTimer();
- log.info("定时器已启动");//添加日志,可在tomcat日志中查看到
- timer.schedule(newLEDTimerTack(fileRealPath,templePath),20000,runTime);
- log.info("已经添加任务");
- }
- publicvoidcontextDestroyed(ServletContextEventevent){//在这里关闭监听器,所以在这里销毁定时器。
- timer.cancel();
- log.info("定时器销毁");
- }
- }
- packagecom.ving.xzfw.led;
- importjava.util.Timer;//定时器类
- importjavax.servlet.ServletContextEvent;
- importjavax.servlet.ServletContextListener;
- importjavax.servlet.ServletContext;
- importorg.apache.log4j.Logger;
- importcom.ving.xzfw.util.GetInformation;
- //importcom.ving.xzfw.lwsp.GetConfigInfor;
- publicclassLEDListenerimplementsServletContextListener{
- privateTimertimer=null;
- privateLoggerlog=Logger.getLogger(getClass());
- //GetconfigInforconfig=newGetconfigInfor();
- GetInformationgetInfo=newGetInformation("bpelConfig.properties");
- IntegerrunTime=Integer.parseInt(getInfo.getProperty("led.TimingRunTime"));
- StringfileRealPath="";
- StringtemplePath="";
- publicvoidcontextInitialized(ServletContextEventevent){
- //在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能
- ServletContextcontext=event.getServletContext();
- fileRealPath=context.getRealPath("")
- +System.getProperty("file.separator")+"LEDFile"
- +System.getProperty("file.separator");
- templePath=context.getRealPath("")
- +System.getProperty("file.separator")+"led"
- +System.getProperty("file.separator");
- timer=newTimer();
- log.info("定时器已启动");//添加日志,可在tomcat日志中查看到
- timer.schedule(newLEDTimerTack(fileRealPath,templePath),20000,runTime);
- log.info("已经添加任务");
- }
- publicvoidcontextDestroyed(ServletContextEventevent){//在这里关闭监听器,所以在这里销毁定时器。
- timer.cancel();
- log.info("定时器销毁");
- }
- }
package com.ving.xzfw.led; import java.util.Timer;//定时器类 import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.ServletContext; import org.apache.log4j.Logger; import com.ving.xzfw.util.GetInformation; //import com.ving.xzfw.lwsp.GetConfigInfor; public class LEDListener implements ServletContextListener { private Timer timer = null; private Logger log = Logger.getLogger(getClass()); // GetconfigInfor config = new GetconfigInfor(); GetInformation getInfo = new GetInformation("bpelConfig.properties"); Integer runTime = Integer.parseInt(getInfo.getProperty("led.TimingRunTime")); String fileRealPath = ""; String templePath = ""; public void contextInitialized(ServletContextEvent event) { // 在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能 ServletContext context = event.getServletContext(); fileRealPath = context.getRealPath("") + System.getProperty("file.separator") + "LEDFile" + System.getProperty("file.separator"); templePath = context.getRealPath("") + System.getProperty("file.separator") + "led" + System.getProperty("file.separator"); timer = new Timer(); log.info("定时器已启动");// 添加日志,可在tomcat日志中查看到 timer.schedule(new LEDTimerTack(fileRealPath, templePath), 20000, runTime); log.info("已经添加任务"); } public void contextDestroyed(ServletContextEvent event) {// 在这里关闭监听器,所以在这里销毁定时器。 timer.cancel(); log.info("定时器销毁"); } } package com.ving.xzfw.led; import java.util.Timer;//定时器类 import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.ServletContext; import org.apache.log4j.Logger; import com.ving.xzfw.util.GetInformation; //import com.ving.xzfw.lwsp.GetConfigInfor; public class LEDListener implements ServletContextListener { private Timer timer = null; private Logger log = Logger.getLogger(getClass()); //GetconfigInfor config = new GetconfigInfor(); GetInformation getInfo = new GetInformation("bpelConfig.properties"); Integer runTime = Integer.parseInt(getInfo.getProperty("led.TimingRunTime")); String fileRealPath = ""; String templePath = ""; public void contextInitialized(ServletContextEvent event) { // 在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能 ServletContext context = event.getServletContext(); fileRealPath = context.getRealPath("") + System.getProperty("file.separator") + "LEDFile" + System.getProperty("file.separator"); templePath = context.getRealPath("") + System.getProperty("file.separator") + "led" + System.getProperty("file.separator"); timer = new Timer(); log.info("定时器已启动");// 添加日志,可在tomcat日志中查看到 timer.schedule(new LEDTimerTack(fileRealPath, templePath), 20000, runTime); log.info("已经添加任务"); } public void contextDestroyed(ServletContextEvent event) {// 在这里关闭监听器,所以在这里销毁定时器。 timer.cancel(); log.info("定时器销毁"); } }
- packagecom.ving.xzfw.led;
- importjava.util.TimerTask;
- publicclassLEDTimerTackextendsTimerTask{
- StringfileRealPath="";
- StringtemplePath="";
- Stringtype="";
- intfloor;
- publicLEDTimerTack(StringfileRealPath,StringtemplePath,Stringtype,Integerfloor){
- this.fileRealPath=fileRealPath;
- this.templePath=templePath;
- this.type=type;
- this.floor=floor;
- }
- publicLEDTimerTack(StringfileRealPath,StringtemplePath){
- this.fileRealPath=fileRealPath;
- this.templePath=templePath;
- }
- publicvoidrun(){
- for(inti=1;i<=3;i++)
- //呵呵,这里就是led动态生成信息的代码!
- XlsUtil.createHtmlFile(templePath,fileRealPath,i);
- }
- }
相关推荐
Timer 类在 Java 中是用于调度任务的工具,它允许程序员安排任务在未来某个时间点或者按照一定的周期执行。这个类位于 `java.util` 包下,与之配合使用的还有一个名为 `TimerTask` 的抽象类,它是所有计划任务的基础...
Java 计时器 Timer 和 TimerTask 用法总结 Java 中的计时器(Timer)和 TimerTask 是一种常用的延迟执行技术,用于实现延迟执行某个任务或事件。下面将详细介绍 Timer 和 TimerTask 的用法和实现原理。 Timer ...
Java计时器(Timer)是Java Swing库中的一个组件,用于调度周期性的任务或执行一次性的延迟任务。在这个经典例子中,我们将会探讨如何利用Java计时器来实现每3秒在控制台上打印当前时间的功能。这个功能对于理解Java...
在IT行业中,计时器(Timer)是一种常见且...而提供的压缩包文件"计时器timer"可能包含了实现这些功能的相关代码、资源文件或者示例,进一步学习和分析这些内容可以帮助我们深入理解这个特定的倒计时功能是如何实现的。
Java 计时器框架的核心是 Timer 和 TimerTask 两个类,它们使程序员可以很容易地计划简单的任务。 计时器的用法 计时器是 Java 中用于计划任务的基本组件。它可以计划简单的任务,如计划一个闹钟,每天在同一时间...
以上就是关于Java计时器的基本介绍,包括如何使用Timer和ScheduledExecutorService创建和管理定时任务。希望对你在理解和使用Java计时器方面有所帮助。在实际编程中,可以根据具体需求选择合适的计时器实现,以达到...
Java计时器是Java Swing库中的一个重要组件,用于在用户界面中实现定时任务或计时功能。`javax.swing.Timer` 类提供了简单的方式来周期性地触发事件,这些事件通常用于更新UI或其他需要定时执行的任务。在提供的代码...
Java计时器是Java编程语言中用于实现定时任务和调度任务的重要工具,它允许程序员设置时间间隔执行特定的代码块。在Java中,我们可以使用`java.util.Timer`类和`java.util.TimerTask`类来创建和管理计时器。下面我们...
有个简单的java 的例子描述对java的Timer的使用的介绍,与实现的例子,方便大家学习
以下是计时器的基本使用示例: ```java import javax.swing.Timer; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class CountdownTimer { private int remainingTime; ...
以下是如何使用`Timer`和`TimerTask`创建一个简单的计时器程序的步骤: 1. **定义TimerTask**: 首先,你需要创建一个继承自`TimerTask`的子类,并重写其`run()`方法。在这个方法中,编写你希望定时执行的代码。...
在编程领域,尤其是在Java开发中,倒计时器(Countdown Timer)是一种常见的实用功能,广泛应用于各种应用程序,如考试系统、倒计时提醒、游戏等。本项目名为"JAVA倒计时器练习程序",它提供了一个基础的实现,能够...
2. **计时器组件**:Java并没有内置的倒计时组件,但开发者可以通过自定义线程或者使用Timer类来实现。Timer类属于javax.swing库,它可以按照预定的时间间隔触发事件,适合做定时更新界面的任务。不过,由于标签提到...
- 创建Timer对象:`Timer(int delay, ActionListener listener)`,其中`delay`参数代表第一次执行任务前的等待时间(以毫秒为单位),`listener`参数是当计时器触发时执行的动作监听器。 - 启动定时器:`timer....
在JAVA中,倒计时器的实现通常依赖于`java.util.Timer`类和`java.util.TimerTask`类。`Timer`类用于创建定时任务,而`TimerTask`则用于定义具体的任务内容,例如更新倒计时显示。下面我们将深入探讨这些关键知识点:...
### 使用Java实现计时器的关键知识点 #### 一、背景介绍 在软件开发过程中,对程序执行时间的测量是一项常见的需求。例如,在进行性能测试、分析算法效率或追踪程序运行状态时,都需要精确地记录时间。Java作为一种...
在Java编程领域,倒计时器(Countdown Timer)是一种常见的实用工具,它可以在特定时间后触发一个事件或提醒用户。对于初学者来说,通过学习和实现倒计时器,可以深入理解Java的多线程、时间处理以及GUI设计等核心...
例如,在Java中,我们可以使用java.util.Timer类;在C#中,可以使用System.Timers.Timer类;在Python中,可以使用threading模块的Timer类。 二、累计计时的原理 累计计时是指从开始到结束,连续计算经过的时间。在...
Java计时器是Java编程中用于处理定时任务的重要工具,尤其在GUI应用程序中,如游戏、动画或者定时触发事件等场景广泛应用。在提供的代码示例中,使用了`javax.swing.Timer`来创建一个简单的计时器,该计时器每秒更新...