static void Main(string[] args) { Singleton s1 = Singleton.Instance; Singleton s2 = Singleton.Instance; Console.WriteLine("s1: " + s1.GetHashCode() + ", s2: " + s2.GetHashCode()); s1.doSomething(); s2.doSomething(); Console.WriteLine("\n\nTesting Singleton Pattern use multiple threading."); Task.Run(() => { System.Threading.Thread.Sleep(5000); SingletonThreadSafe s12 = SingletonThreadSafe.Instance; Console.WriteLine($"first: {s12.GetHashCode()}"); s12.doSomething(); }); Task.Run(() => { System.Threading.Thread.Sleep(5000); SingletonThreadSafe s22 = SingletonThreadSafe.Instance; Console.WriteLine($"second: {s22.GetHashCode()}"); s22.doSomething(); }); Console.ReadLine(); }