1 4 package chipchat; 5 6 import java.util.HashMap ; 7 8 11 public class ConnectionWaiter extends Thread { 12 13 16 17 18 private static ConnectionWaiter instance = null; 19 20 21 private ConnectionWaiter() { 22 } 23 24 25 public static ConnectionWaiter getInstance() { 26 if (instance == null) { 27 makeInstance(); 28 } 29 return instance; 30 } 31 32 35 private static synchronized void makeInstance() { 36 if (instance == null) { 37 instance = new ConnectionWaiter(); 38 } 39 } 40 41 42 private Object lock = new Object (); 43 44 private HashMap part1 = new HashMap (); 45 46 private HashMap part2 = new HashMap (); 47 48 51 public void run() { 52 while (true) { 53 try { 54 Thread.sleep(30000); 55 } catch (InterruptedException e) { 56 e.printStackTrace(); 57 } 58 synchronized (lock) { 59 part2 = part1; 60 part1.clear(); 61 } 62 } 63 } 64 65 70 public void put(String name, ConnectionInfo o) { 71 synchronized (lock) { 72 part1.put(name, o); 73 } 74 } 75 76 81 public ConnectionInfo get(String name) { 82 synchronized (lock) { 83 Object 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 |