您的位置:首页 > 其它

单件模式

2012-08-15 10:08 225 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace CountClient
{
public class CountSigleton
{
static CountSigleton uniCounter = null;

private int totNum = 0;

private CountSigleton()
{
Thread.Sleep(2000);
}

public static  CountSigleton Instance
{
get
{
if (uniCounter==null)
{
uniCounter=new CountSigleton();
}

return uniCounter;
}
}

public void Add()
{
totNum++;
}

public int GetCounter()
{
return totNum;

}
}
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace CountClient
{
public class CountMutilThread
{
public CountMutilThread(){

}

public static void DoSomeWork()
{
string results = "";

CountSigleton MyCounter = CountSigleton.Instance;

for (int i = 1; i < 5; i++)
{
MyCounter.Add();

results += "线程";
results += Thread.CurrentThread.Name.ToString() + "——〉";
results += "当前的计数:";
results += MyCounter.GetCounter().ToString();
results += "\n";
Console.WriteLine(results);
results = "";

}
}

public void StartMain()
{
Thread thread0 = Thread.CurrentThread;
thread0.Name = "Thread 0";

Thread thread1 = new Thread(new ThreadStart(DoSomeWork));
thread1.Name = "Thread 1";

Thread thread2 =new Thread(new ThreadStart(DoSomeWork));
thread2.Name = "Thread 2";

Thread thread3 =new Thread(new ThreadStart(DoSomeWork));
thread3.Name = "Thread 3";

thread1.Start();
thread2.Start();
thread3.Start();

/**////线程0也只执行和其他线程相同的工作
DoSomeWork();

}
}
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CountClient
{
class Program
{
static void Main(string[] args)
{
CountMutilThread cmt = new CountMutilThread();

cmt.StartMain();

Console.ReadLine();
}
}
}


单件模式,例子。

保证一个类仅有一个实例

参考:http://terrylee.cnblogs.com/archive/2005/12/09/293509.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: