Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- using System.Linq;
- class Program
- {
- static void Main(string[] args)
- {
- (new Thread(() =>
- {
- var comp2 = new Computer();
- comp2.OS = OS.GetInstance("Windows 10");
- Console.WriteLine(comp2.OS.Name);
- })).Start();
- (new Thread(() =>
- {
- var comp2 = new Computer();
- comp2.OS = OS.GetInstance("Windows xp");
- Console.WriteLine(comp2.OS.Name);
- })).Start();
- Console.ReadLine();
- }
- }
- class Computer
- {
- public OS OS {get;set;}
- public void Launch(string osName)
- {
- this.OS = OS.GetInstance(osName);
- }
- }
- class OS
- {
- private static OS instance;
- public static object syncRoot = new object();
- public string Name{get; private set;}
- protected OS(string name)
- {
- this.Name = name;
- }
- public static OS GetInstance(string name)
- {
- if(instance == null)
- {
- lock(syncRoot)
- {
- if(instance == null)
- {
- instance = new OS(name);
- }
- }
- }
- return instance;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement