Мне кажется, что вам нужно 2 очереди.Есть 1 очередь для сбора и 1 для обработки.В какой-то момент вам нужно поменять их местами.Пока вы на короткое время заблокируете переключатель, все должно быть в порядке.Нет необходимости возиться с указателями в связанном списке, и вы можете избежать копирования содержимого вокруг.
При этом, возможно, вам следует рассмотреть возможность просмотра пакетов параллелизма для исполнителей, которые работают вне очередей.Не зная ничего о вашей конкретной задаче, кажется, что они могут лучше соответствовать тому, что вы делаете, и позволяют избежать необходимости вручную кодировать детали.
РЕДАКТИРОВАТЬ: Это пакет, который яговоря о.http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/package-summary.html