熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java計時器Timer 使用

2013-11-23 18:53:30  來源: Java核心技術 

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

  }

  }


From:http://tw.wingwit.com/Article/program/Java/hx/201311/25938.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.