(原创)多线程设计模式 之 不变模式

模式名称:只读模式

数据访问性:只读
数据访问条件:没有
可开线程数量:按需开启
数据吞吐性:好,可多线程同时工作
工作时机:线程启动后立即开始

线程工作特点:
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));
(原创)多线程设计模式 之 不变模式            }
    
(原创)多线程设计模式 之 不变模式        }

(原创)多线程设计模式 之 不变模式    }

(原创)多线程设计模式 之 不变模式}


客户端:

(原创)多线程设计模式 之 不变模式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();
(原创)多线程设计模式 之 不变模式            }

(原创)多线程设计模式 之 不变模式        }

(原创)多线程设计模式 之 不变模式    }

(原创)多线程设计模式 之 不变模式}


运行效果如下图
(原创)多线程设计模式 之 不变模式


本文转自左洸博客园博客,原文链接:http://www.cnblogs.com/myqiao/archive/2006/04/17/377437.html,如需转载请自行联系原作者


上一篇:全栈必备MySQL性能调优


下一篇:云计算-从基础到应用架构系列-虚拟化的技术(上)