public void addDataListener(String path, DataListener listener) {
        ConcurrentMap<DataListener, TargetDataListener> listeners = dataListeners.get(path);
        if (listeners == null) {
            dataListeners.putIfAbsent(path, new ConcurrentHashMap<DataListener, TargetDataListener>());
            listeners = dataListeners.get(path);
        }
        TargetDataListener targetListener = listeners.get(listener);
        if (targetListener == null) {
            listeners.putIfAbsent(listener, createTargetDataListener(path, listener));
            targetListener = listeners.get(listener);
        }
         addTargetDataListener(path, targetListener);
    }
@author Robert HG (254963746@qq.com) on 7/8/14.
lts-core/src/main/java/com/github/ltsopensource/zookeeper/support/AbstractZkClient.java