The problem is the static `#getService()` method. According to my (limited) understanding of the Java Memory Model this would have to be synchronized on the same monitor which in this case means the class. So `#start()` and `#stop()` would also have to synchronize on the class. Other options would be to use static monitor or a `Lock` or an `AtomicReference`. I don't really care either which way.