java

位置:IT落伍者 >> java >> 浏览文章

Java计时器Timer 使用


发布日期:2019年12月02日
 
Java计时器Timer 使用

所有类型的 Java 应用程序一般都需要计划重复执行的任务

Timer类是用来执行任务的类它接受一个TimerTask做参数

javautilTimer 和 javautilTimerTask 它们使程序员可以很容易地计划简单的任务

Timer

Timer最常用的是schedule执行任务的模式它可以以两种方式执行任务:

:在某个时间(Data):在某个固定的时间之后(int delay)这两种方式都可以指定任务执行的频率

看个简单的例子:

Java代码

import javaioIOException;

import javautilTimer;

public class TimerTest {

public static void main(String[] args){

Timer timer = new Timer();

timerschedule(new Job() );//在秒后执行此任务每次间隔如果传递一个Data参数就可以在某个固定的时间执行这个任务

/*

//这个是用来停止此任务的否则就一直循环执行此任务了

while(==){

try {

if(==){

timercancel();//使用这个方法退出任务

}

} catch (IOException e)

eprintStackTrace();

} */

}

static class Job extends javautilTimerTask{

@Override

public void run() {

// TODO Autogenerated method stub

Systemoutprintln(soeasy!);

}

}

}

import javaioIOException;

import javautilTimer;

public class TimerTest {

public static void main(String[] args){

Timer timer = new Timer();

timerschedule(new Job() );//在秒后执行此任务每次间隔如果传递一个Data参数就可以在某个固定的时间执行这个任务

/*

//这个是用来停止此任务的否则就一直循环执行此任务了

while(==){

try {

if(==){

timercancel();//使用这个方法退出任务

}

} catch (IOException e)

eprintStackTrace();

} */

}

static class Job extends javautilTimerTask{

@Override

public void run() {

// TODO Autogenerated method stub

Systemoutprintln(soeasy!);

}

}

}

TimerTask 刚才在代码里提到了 TimerTask 类TimerTask类里有一个抽象方法run()我们把任务写到run()方法里或由run()执行其他方法

完整的代码:

Java代码

public class TimerTest{

public static void main(String[] args){

int delay=;//延迟

Timer timer=new Timer();//生成一个Timer对象

NewTask myTask=new NewTask();//初始化我们的任务

timerschedule(yourTaskdelay);//还有其他重载方法

}

}

class NewTask extends TimerTask{//继承TimerTask类

public void run(){

Systemoutprintln(printing!);

}

}

public class TimerTest{

public static void main(String[] args){

int delay=;//延迟

Timer timer=new Timer();//生成一个Timer对象

NewTask myTask=new NewTask();//初始化我们的任务

timerschedule(yourTaskdelay);//还有其他重载方法

}

}

class NewTask extends TimerTask{//继承TimerTask类

public void run(){

Systemoutprintln(printing!);

}

}这样这个程序就会在五秒钟后输出 printing!

Timer的功能是相当强大的若要详细了解可以查看帮助文档

完整案例!

现在大家看一下我写的关于实现LED滚屏显示动态信息!

web 监听

Java代码

package comvingxzfwled;

import javautilTimer;//定时器类

import javaxservletServletContextEvent;

import javaxservletServletContextListener;

import javaxservletServletContext;

import orgapachelogjLogger;

import comvingxzfwutilGetInformation;

//import comvingxzfwlwspGetConfigInfor;

public class LEDListener implements ServletContextListener {

private Timer timer = null;

private Logger log = LoggergetLogger(getClass());

// GetconfigInfor config = new GetconfigInfor();

GetInformation getInfo = new GetInformation(bpelConfigproperties);

Integer runTime = IntegerparseInt(getInfogetProperty(ledTimingRunTime));

String fileRealPath = ;

String templePath = ;

public void contextInitialized(ServletContextEvent event) {

// 在这里初始化监听器在tomcat启动的时候监听器启动可以在这里实现定时器功能

ServletContext context = eventgetServletContext();

fileRealPath = contextgetRealPath()

+ SystemgetProperty(fileseparator) + LEDFile

+ SystemgetProperty(fileseparator);

templePath = contextgetRealPath()

+ SystemgetProperty(fileseparator) + led

+ SystemgetProperty(fileseparator);

timer = new Timer();

(定时器已启动);// 添加日志可在tomcat日志中查看到

timerschedule(new LEDTimerTack(fileRealPath templePath) runTime);

(已经添加任务);

}

public void contextDestroyed(ServletContextEvent event) {// 在这里关闭监听器所以在这里销毁定时器

timercancel();

(定时器销毁);

}

}

package comvingxzfwled;

import javautilTimer;//定时器类

import javaxservletServletContextEvent;

import javaxservletServletContextListener;

import javaxservletServletContext;

import orgapachelogjLogger;

import comvingxzfwutilGetInformation;

//import comvingxzfwlwspGetConfigInfor;

public class LEDListener implements ServletContextListener {

private Timer timer = null;

private Logger log = LoggergetLogger(getClass());

//GetconfigInfor config = new GetconfigInfor();

GetInformation getInfo = new GetInformation(bpelConfigproperties);

Integer runTime = IntegerparseInt(getInfogetProperty(ledTimingRunTime));

String fileRealPath = ;

String templePath = ;

public void contextInitialized(ServletContextEvent event) {

// 在这里初始化监听器在tomcat启动的时候监听器启动可以在这里实现定时器功能

ServletContext context = eventgetServletContext();

fileRealPath = contextgetRealPath()

+ SystemgetProperty(fileseparator) + LEDFile

+ SystemgetProperty(fileseparator);

templePath = contextgetRealPath()

+ SystemgetProperty(fileseparator) + led

+ SystemgetProperty(fileseparator);

timer = new Timer();

(定时器已启动);// 添加日志可在tomcat日志中查看到

timerschedule(new LEDTimerTack(fileRealPath templePath) runTime);

(已经添加任务);

}

public void contextDestroyed(ServletContextEvent event) {// 在这里关闭监听器所以在这里销毁定时器

timercancel();

(定时器销毁);

}

}

LEDTimeTrack

Java代码

package comvingxzfwled;

import javautilTimerTask;

public class LEDTimerTack extends TimerTask {

String fileRealPath = ;

String templePath = ;

String type=;

int floor;

public LEDTimerTack(String fileRealPathString templePathString typeInteger floor) {

thisfileRealPath=fileRealPath;

thistemplePath=templePath;

thistype =type;

thisfloor=floor;

}

public LEDTimerTack(String fileRealPathString templePath) {

thisfileRealPath=fileRealPath;

thistemplePath=templePath;

}

public void run( ) {

for(int i=;i<=;i++)

//呵呵这里就是led动态生成信息的代码!

XlsUtilcreateHtmlFile(templePath fileRealPathi);

}

}

               

上一篇:Java的垃圾回收之算法

下一篇:java实现缩略图和抓屏幕