public synchronized void remove(BaseObject obj) { synchronized (objList) { if (!objList.contains(obj)) { return; } objList.remove(obj); obj.notifyListeners(obj); obj.removeListener(this); notifyListener(obj); } }