You need to synchronize if there's a possibility that a value could change while you are reading it. In other words, if you are constantly reading and writing a value, from different threads, then you will need to synchronize.

If you have one thread that initializes a bunch of values; then kicks off a bunch of threads that only read those values, then there is no need to synchronize access to the values.

Viggy