Я знаю this Аналогичный вопрос, но мой вопрос касается конкретного случая очистки ThreadLocal.ThreadLocal Очистка вектора в Java
Чтобы сохранить состояние на основе потоков, я сохраняю (неизвестное) число ThreadLocals в статическом векторе. Иногда для «жадного» потока потребуется больше доступных ThreadLocals, и в результате размер Vector будет увеличен. Хотя очистка с использованием ThreadLocal.remove() не является проблемой в моем сценарии, я задаюсь вопросом, удастся ли когда-либо уменьшить размер вектора после того, как жадный поток погибнет или если он будет только расти (или, в лучшем случае, останется тем же).
Чтобы уточнить: я понимаю, что для любого данного ThreadLocal для каждого потока будет существовать другой экземпляр. Как мог тогда мой статический вектор знать, когда он обращается из потока A, что значения ThreadLocal T пусты для всех существующих потоков?
Спасибо за вашу помощь
Привет, спасибо. Я знаю об этом, но мой вопрос заключается не в том, как это сделать, а в том, если вообще можно сжать такой Вектор. –
@RaulBertone Я никогда не использовал их, но чтение документов выглядит так: вызов 'setSize()', за которым следует 'trimToSize()', будет делать именно то, что вы хотите. – Windle
Если вы устанавливаете хорошую IDE, это довольно легко CTRL + Щелкните по этому коду. Там вы найдете копию массива для меньшего массива, поэтому вектор действительно уменьшен в области памяти. – Jan