Нет.
ThreadLocal для личных данных потока. В вашем случае вам нужны объекты для связи , поэтому вам нужны объекты другого типа.
Я думаю, что лучше всего использовать синхронизированные очереди: java.util.concurrent.LinkedBlockingQueue<E>
.
Очереди позволяют производителю вставлять данные и потребителю потреблять. Если он синхронизирован, это позволяет делать это из разных потоков, не нарушая структуру.
Вы можете разделить очередь между соответствующими авторами / читателями:
Writer 1 -> queue 1 -> [readers A/B/C]
Writer 2 -> queue 2 -> [readers D/E/F]
У каждого писателя и читателя будет свой поток. Каждый читатель будет пытаться взять один элемент из своей очереди, если нет элементов. Если вам нужно более мудро управлять своими читателями, вы можете попробовать более сложный подход, но я думаю, что это хорошая отправная точка.