Solange man sie nur einmal befüllt und die Threads nur lesend darauf zugreifen, sehe ich im Quelltext nichts, das dabei Probleme machen würde.
Nur solange das Befüllen beendet ist sobald das Lesen los geht. Beim Add könnte das implementierende Array der Liste neu zugewiesen werden. Das ohne Synchronisation durchzuführen wäre mir zu heikel. Selbst wenn das aktuell safe ist, könnte sich die Implementierung in Zukunft ja ändern.