You can deposit $1,000,000 in thread 0 and withdraw $1,000,000 in thread 1 simultaneously; sometimes the withdrawal will work and sometimes it will throw an exception because the deposit isn't completed yet
How are you going to unit test your service for different configurations? What if somebody introduces a piece of code that beats your client to the punch in initializing the service? There are so many opportunities for this code to break or introduce unexpected side effects. It's a really REALLY bad idea to do this.