package com.e2u.gc.weakref; import java.util.ArrayList; import java.util.Date; import java.util.List; public class MessagePublisher { private static List listeners = new ArrayList(); public static void addMessageListener(MessageListener l) { // you can try : listeners.add(l); listeners.add(l); // listeners.add(new WeakListener(l)); } public static void removeMessageListener(MessageListener l) { listeners.remove(l); } public static void publishMessage(String message) { for(int i = 0; i < listeners.size(); i++) { MessageListener l = (MessageListener) listeners.get(i); l.recevied(message); } } static { Thread thread = new Thread(new Runnable() { public void run() { while(true) { Runtime runtime = Runtime.getRuntime(); long free = runtime.freeMemory(); int value = (int) (free * 100 / runtime.totalMemory()); publishMessage(new Date() + " Memory:" + value + "%"); try { Thread.sleep(200); } catch(InterruptedException e) { } } } }); thread.setPriority(Thread.MAX_PRIORITY); thread.setDaemon(true); thread.start(); } }