```
object Users {
  val userCountByAgeMap = readFromFile(); // read from file returns immutable map
}

```

As in above example in scala, Users will be Singleton object and userCountByAgeMap will be initialized lazily.

So is this initialization atomic? i.e. one and only one thread will be able to initialize it.  

Suppose userCountByAgeMap is initialized by Thread A, will it be visible to Thread B.

If initialization is not atomic/memory visibility not ensured, will making userCountByAgeMap variable as lazy val fix it?