Ответ, вероятно, довольно прост - тот факт, что любое создание этого класса немедленно аннулирует массив в области приложения, делает этот класс довольно сложным для управления.Кроме того, хотя сам шпионский memcached драйвер ведет себя как одноэлементный, а массив (java.util.vector) является поточно-ориентированным, ничего другого в этой реализации нет, кроме области приложения, определенно не экземпляра cfc.
Предполагая, что вы можете исключить значение out of bounds для idx в функции getCache () (что, я полагаю, вы уже сделали, если нет, добавьте блок try / catch в функцию и сообщите, что такое idx, когда выдается исключение), вы можете устранить симптомы, фактически не устраняя причину, используя эксклюзивные cflocks с тем же именем вокруг конструктора и метода getCache ().Таким образом, даже если у вас есть случайные экземпляры вашего класса, вы никогда не сможете выбросить массив, когда что-то пытается к нему получить доступ, и вы не сможете попытаться получить к нему доступ, пока он создается заново.,Это вовсе не оптимальное решение, и если вы испытываете высокий параллелизм, вы заметите небольшое увеличение времени отклика (довольно незначительное, но в зависимости от того, сколько запросов / сек вы обслуживаете, это может определенно повлиять на максимальную пропускную способность.