What are my options for making a singleton thread safe?