@Override
        public void run() {
            while (true) {
                final Runnable changeAction;
                commandLock.lock();
                try {
                    changeAction = changeCommandQueue.poll();
                    if (changeAction == null) {
                        commandExecutionRunRequested = false;
                    }
                } finally {
                    commandLock.unlock();
                }
                if (changeAction == null) {
                    break;
                } else {
                    processMapChange(changeAction);
                }
            }
        }
replaces objects in this Map completely with given objects
<br>
Same effect could be reached by calling removeAll() followed by add(newObjects),
but performance is better when calling replace() method instead
main/src/main/java/cgeo/geocaching/utils/AsynchronousMapWrapper.java