⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.java

📁 一个应用timer的小程序
💻 JAVA
字号:
package net.sujee.javatimer;import java.util.Vector;import net.sujee.javatimer.TimerCallback;public class Timer extends Thread{   Vector mCallbacks;   boolean mKeepWorking;   long mNotifyTicks;   public static final int DEFAULT_TICK_INTERVAL = 1000; // 1 sec   public Timer ()   {      super ("Timer thread");      mCallbacks = new Vector ();      mKeepWorking = true;      mNotifyTicks = DEFAULT_TICK_INTERVAL; // one Sec default      start();   }   public synchronized void addCallback (TimerCallback callback,   		long tickInterval)   {      if (callback != null)      {         Callback client = new Callback ();         client.callback = callback;         client.tickInterval = (tickInterval > 0) ? tickInterval : DEFAULT_TICK_INTERVAL;         mCallbacks.add (client);         // also modify the maximum time I should sleep         if ( client.tickInterval < mNotifyTicks)            mNotifyTicks = client.tickInterval;      }   }   public synchronized void removeCallback (TimerCallback callback)   {      int totalCallbacks = mCallbacks.size();      for (int i=0 ; i<  totalCallbacks ; ++i)      {         Callback c = (Callback) mCallbacks.get(i);         if (c.callback == callback)         {            mCallbacks.remove(i);            return;         }      }   }   public void stopTicking ()   {      mKeepWorking = false;   }   public void run ()   {      long lastTime = System.currentTimeMillis();      while (mKeepWorking)      {         synchronized (this)         {            if ( (System.currentTimeMillis()-lastTime) >= mNotifyTicks )            {               int callbackCount = mCallbacks.size();               for (int i=0; i < callbackCount; ++i)               {                  Callback c = (Callback) mCallbacks.get(i);                  long elapsedTime = System.currentTimeMillis() -c.lastNotified;                  if ( c.tickInterval <= elapsedTime)                  {                     c.callback.tick ();                     c.lastNotified = System.currentTimeMillis();                   }               }               lastTime = System.currentTimeMillis();            }         }         // now sleep for a while!         try         {            sleep (mNotifyTicks/2);         }         catch (InterruptedException e)         {            // no need to do anytihng         }      }   }}class Callback{   long tickInterval;   long lastNotified;   TimerCallback callback;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -