Построить новый список немного расточительно, только чтобы скопировать его в другой (окончательный) список.
Попробуйте использовать неизменяемые списки и назначить новый список _sync.a
, _sync.b
и _sync.c
(удалив из них модификатор final
) после построения списка (в updateRunOnceEveryFiveMinutes
.)
Также вы синхронизируете на 4 разных объектах. Было бы проще синхронизировать только один объект (_sync
или, возможно, выделенный объект блокировки) для каждого вызова метода.
Если списки, возвращаемые getListA
и т. Д., Являются неизменяемыми, вам также не нужны вызовы Collections.synchronizedList
.