1 package rero.util; 2 3 import java.io.*; 4 import java.util.*; 5 6 public class TimerUtil implements Runnable 7 { 8 protected long resolution = 15 * 1000; 10 protected List timers = new LinkedList(); 12 13 public void setResolution(long _resolution) 14 { 15 if (_resolution == 0 && resolution > 1000) 16 { 17 resolution = 1000; 18 } 19 else 20 { 21 resolution = _resolution; 22 } 23 } 24 25 public void start() 26 { 27 Thread timerThread = new Thread (this); 28 timerThread.setName("jIRCii TIMER Thread"); 29 timerThread.setDaemon(true); timerThread.setPriority(Thread.MIN_PRIORITY); 31 timerThread.start(); 32 } 33 34 public void run() 35 { 36 while (true) 37 { 38 try 39 { 40 Iterator i = timers.iterator(); 41 while (i.hasNext()) 42 { 43 TimedEvent temp = (TimedEvent)i.next(); 44 if (temp.isValid()) 45 { 46 if (temp.isReady()) 47 { 48 temp.timerExecute(); 49 } 50 } 51 else 52 { 53 i.remove(); 54 } 55 } 56 57 Thread.sleep(resolution); 58 } 59 catch (Exception ex) 60 { 61 ex.printStackTrace(); 62 } 63 } 64 } 65 66 public void addTimer(TimerListener l, long delay, int repeat) 67 { 68 if (delay < resolution) 69 { 70 setResolution(delay); 71 } 72 addTimer(new TimedEvent(l, delay, repeat)); 73 } 74 75 public void addTimer(TimerListener l, long delay) 76 { 77 if (delay < resolution) 78 { 79 setResolution(delay); 80 } 81 addTimer(new TimedEvent(l, delay)); 82 } 83 84 public void stopTimer(TimerListener l) 85 { 86 Set removeMe = new HashSet(); 87 88 ListIterator i = timers.listIterator(); 89 while (i.hasNext()) 90 { 91 TimedEvent temp = (TimedEvent)i.next(); 92 if (temp.getListener() == l) 93 { 94 temp.finish(); 95 } 96 } 97 } 98 99 public void addTimer(TimedEvent temp) 100 { 101 timers.add(temp); 102 } 103 } 104 | Popular Tags |