ThreadLocal - Требуется ли это, если мы устанавливаем значение в конструкторе? - PullRequest
0 голосов
/ 21 декабря 2010

У меня есть класс MyThread, который реализует Callable .Класс имеет конструктор, который принимает параметры, такие как блокировка очереди и другие.В моем основном классе я создаю экземпляр этого класса MyThread с новой очередью блокировки и другими параметрами.Кроме того, я поддерживаю две карты: одну для сохранения ссылки MyThread с одним из уникальных параметров в качестве ключа, а другую для блокировки ссылки на очередь с тем же уникальным ключом.

В ходе этого процесса я получаю эту очередь блокировки из хэш-карты, добавляю свое настраиваемое сообщение, беру соответствующий экземпляр MyThread и отправляю его в ThreadPoolTaskExecutor (версия Spring).

Насколько я понимаю,каждый поток должен получить свою собственную копию значений (например, очередь блокировки и т. д.), так как я передаю их во время конструирования и позже создаю поток, используя ThreadPoolTaskExecutor.submit (myThreadObj).Мне просто интересно, может ли кто-нибудь подтвердить, правда ли это, ИЛИ требуется ли мне использовать ThreadLocal в этом сценарии.Пока что с тестированием у меня проблем не возникало, но тогда мне еще предстоит провести нагрузочное тестирование.

Заранее спасибо.

1 Ответ

6 голосов
/ 21 декабря 2010

Вы фактически заново изобрели ThreadLocal. Наслаждайтесь!

...