KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > chipchat > ConnectionWaiter


1 /*
2  * Created on 2004. 6. 24.
3  */

4 package chipchat;
5
6 import java.util.HashMap JavaDoc;
7
8 /**
9  * @author MTY.
10  */

11 public class ConnectionWaiter extends Thread JavaDoc {
12
13     /*
14      * Sigleton..
15      */

16
17     /** Instance */
18     private static ConnectionWaiter instance = null;
19
20     /** Constructor */
21     private ConnectionWaiter() {
22     }
23
24     /** Getter of instance. */
25     public static ConnectionWaiter getInstance() {
26         if (instance == null) {
27             makeInstance();
28         }
29         return instance;
30     }
31
32     /**
33      * Make just one instance.
34      */

35     private static synchronized void makeInstance() {
36         if (instance == null) {
37             instance = new ConnectionWaiter();
38         }
39     }
40
41     /** Lock object */
42     private Object JavaDoc lock = new Object JavaDoc();
43     /** Part1 */
44     private HashMap JavaDoc part1 = new HashMap JavaDoc();
45     /** Part2 */
46     private HashMap JavaDoc part2 = new HashMap JavaDoc();
47
48     /**
49      * Run method.
50      */

51     public void run() {
52         while (true) {
53             try {
54                 Thread.sleep(30000);
55             } catch (InterruptedException JavaDoc e) {
56                 e.printStackTrace();
57             }
58             synchronized (lock) {
59                 part2 = part1;
60                 part1.clear();
61             }
62         }
63     }
64
65     /**
66      * Put value
67      * @param name Name
68      * @param o value
69      */

70     public void put(String JavaDoc name, ConnectionInfo o) {
71         synchronized (lock) {
72             part1.put(name, o);
73         }
74     }
75
76     /**
77      * Get value
78      * @param name Name
79      * @return value
80      */

81     public ConnectionInfo get(String JavaDoc name) {
82         synchronized (lock) {
83             Object JavaDoc o = part1.get(name);
84             if (o != null) {
85                 part1.remove(name);
86                 return (ConnectionInfo) o;
87             } else {
88                 o = part2.get(name);
89                 if (o != null) {
90                     part2.remove(name);
91                     return (ConnectionInfo) o;
92                 } else {
93                     return null;
94                 }
95             }
96         }
97     }
98 }
99
Popular Tags