KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > rero > util > TimerUtil


1 package rero.util;
2
3 import java.io.*;
4 import java.util.*;
5
6 public class TimerUtil implements Runnable JavaDoc
7 {
8    protected long resolution = 15 * 1000; // 15 second resolution by default... good enough for government work eh
9

10 // protected List timers = Collections.synchronizedList(new LinkedList());
11
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 JavaDoc timerThread = new Thread JavaDoc(this);
28       timerThread.setName("jIRCii TIMER Thread");
29       timerThread.setDaemon(true); // we don't want the virtual machine staying alive on our account.
30
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 JavaDoc 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