private boolean removeRequested() {
            final long time = System.currentTimeMillis();
            MapObjectOptions options;
            while ((options = requestedToRemove.poll()) != null) {
                final Object obj = drawObjects.get(options);
                if (obj != null) {
                    removeDrawnObject(obj);
                    drawObjects.remove(options);
                } else {
                    // could not remove, is it enqueued to be draw?
                    // if yes, remove it
                    requestedToAdd.remove(options);
                }
                if (System.currentTimeMillis() - time >= TIME_MAX) {
                    // removing and adding markers are time costly operations and we don't want to block UI thread
                    runOnUIThread(this);
                    return false;
                }
            }
            return true;
        }
magic number of milliseconds. maximum allowed time of adding or removing items to googlemap
main/src/main/java/cgeo/geocaching/maps/google/v2/GoogleMapObjectsQueue.java