No, you need to lock them when - besides the read - there is a write.
As long as the collection is not changed, there is no change that can lead to inconsistencies.
I regularly have non-locked multi threaded reads, i.e. on collection containing metadata that an application loads at start and that never changes.
Generally the problem is that for performance (locks are expensive) it is an overhead to lock, and as long as no read happen while writing (those would possibly be inconsistent) - there simply is no need for the overhead.
If you MUST write to it, use a MultipleReaderSingleWriter lock. This allows only one write, but unlimited readers while no writing happens. RTFM for example and method details.