Class ConcurrentQNameMap

java.lang.Object
com.thoughtworks.xstream.io.xml.QNameMap
com.github._1c_syntax.bsl.reader.common.xstream.ConcurrentQNameMap

public class ConcurrentQNameMap extends QNameMap
QNameMap с потокобезопасными картами без блокировок на чтении.

Штатный QNameMap хранит соответствия в Collections.synchronizedMap, а getJavaClassName(QName) вызывается на каждый XML-элемент. При параллельном чтении (метаданные читаются parallelStream) все потоки сериализуются на мониторе этой общей карты — по профилю это заметная доля CPU. Здесь карты — ConcurrentHashMap, чтение которых свободно от блокировок; отображения регистрируются один раз до начала чтения.