所有类型的 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);
}
}