模式名称:只读模式
数据访问性:只读
数据访问条件:没有
可开线程数量:按需开启
数据吞吐性:好,可多线程同时工作
工作时机:线程启动后立即开始
线程工作特点:
1、只能读取数据对象
2、多个线程可以同时访问数据对象
namespace Pattern_1
{
public class Data
{
//被保护的数据对象
const string info = "Hello World";
Random random = new Random();
//线程方法
public void Func(Object id)
{
System.Console.WriteLine("{0} 号线程开始处理数据:{1}", id, info);
DoSomething((int)id);
System.Console.WriteLine("{0} 号线程完成处理任务", id);
}
//非常耗时的工作
private void DoSomething(int id)
{
string str = "";
for (int i = 0; i < 60; i++)
{
str = str + ".";
System.Console.WriteLine("{0} 号线程工作进度{1}", id, str);
Thread.Sleep(random.Next(3000));
}
}
}
}
{
public class Data
{
//被保护的数据对象
const string info = "Hello World";
Random random = new Random();
//线程方法
public void Func(Object id)
{
System.Console.WriteLine("{0} 号线程开始处理数据:{1}", id, info);
DoSomething((int)id);
System.Console.WriteLine("{0} 号线程完成处理任务", id);
}
//非常耗时的工作
private void DoSomething(int id)
{
string str = "";
for (int i = 0; i < 60; i++)
{
str = str + ".";
System.Console.WriteLine("{0} 号线程工作进度{1}", id, str);
Thread.Sleep(random.Next(3000));
}
}
}
}
客户端:
namespace Threads
{
class Program
{
static void Main(string[] args)
{
Client_1.Run();
}
//演示不变模式
class Client_1
{
static public void Run()
{
Pattern_1.Data data = new Pattern_1.Data();
int i;
for (i = 0; i < 2; i++)
{
Thread t = new Thread(new ParameterizedThreadStart(data.Func));
t.Start(i);
}
Console.ReadLine();
}
}
}
}
{
class Program
{
static void Main(string[] args)
{
Client_1.Run();
}
//演示不变模式
class Client_1
{
static public void Run()
{
Pattern_1.Data data = new Pattern_1.Data();
int i;
for (i = 0; i < 2; i++)
{
Thread t = new Thread(new ParameterizedThreadStart(data.Func));
t.Start(i);
}
Console.ReadLine();
}
}
}
}
运行效果如下图
本文转自左洸博客园博客,原文链接:http://www.cnblogs.com/myqiao/archive/2006/04/17/377437.html,如需转载请自行联系原作者