This should be thread-safe, and its not.  The prior implementation was relying on class initialization to ensure thread-safe initialization of the userHome property.  Since you've moved this to be an instance member of this class, you need to modify this method to use some sort of thread-safe construct here.

It might just be sufficient to mark userHome volatile.  java.io.File is immutable, and initializing the variable is relatively inexpensive, so doing it concurrently from multiple threads in the event that more than one thread needs the value at the same time and its not yet prepared isn't an issue.