На этот вопрос было бы легче ответить с большим контекстом. Но в целом не требуется значительных затрат времени на передачу нескольких ссылок на объекты в полезной нагрузке задания. Объем служебной памяти, связанной с каждым потоком ОС, вероятно, больше, чем вся память, используемая локальными ссылками потока. Основной риск заключается в том, что хранение ненужных ссылок предотвратит сбор мусора, но это также произойдет, если вы сохранили эти объекты в глобальной структуре данных.
Синхронизация с блокировками и т. Д. c является каноническим подход, но зачастую трудно быть уверенным в том, что ваша синхронизация действительно точна.
Убедиться в том, что единственная структура данных свободна от гонок данных, обычно легко с помощью блокировок. Вам просто нужно обернуть каждую операцию чтения и записи вызовом блокировки-разблокировки. Хотя это приведет к снижению производительности в условиях конкуренции, что сделает локальное хранилище потоков еще более быстрым по сравнению.
Пока вы не делаете глубокие копии огромных структур данных для каждого отдельного потока, все будет в порядке. , Обычно рекомендуется сохранять контекст задания в локальном хранилище потока, где к нему можно обращаться без конфликта с другими потоками.