Explain Singleton Design Pattern with example. Also explain it's behavior in multi-threaded environment.