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

模式名称:只读模式

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

线程工作特点:
1、只能读取数据对象
2、多个线程可以同时访问数据对象

namespace  Pattern_1
ExpandedBlockStart.gifContractedBlock.gif
{
    
public class Data
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
//被保护的数据对象
        const string info = "Hello World";

        Random random 
= new Random();

        
//线程方法
        public void Func(Object id)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            System.Console.WriteLine(
"{0} 号线程开始处理数据:{1}", id, info);
            DoSomething((
int)id);
            System.Console.WriteLine(
"{0} 号线程完成处理任务", id);
        }


        
//非常耗时的工作
        private void DoSomething(int id)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
string str = "";
            
for (int i = 0; i < 60; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{  
                 str 
= str + ".";
                 System.Console.WriteLine(
"{0} 号线程工作进度{1}", id, str);
                Thread.Sleep(random.Next(
3000));
            }
    
        }

    }

}


客户端:

namespace  Threads
ExpandedBlockStart.gifContractedBlock.gif
{
    
class Program
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
static void Main(string[] args)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            Client_1.Run();
        }


        
//演示不变模式
        class Client_1
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
static public void Run()
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                Pattern_1.Data data 
= new Pattern_1.Data();
                
int i;
                
for (i = 0; i < 2; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    Thread t 
= new Thread(new ParameterizedThreadStart(data.Func));
                    t.Start(i);
                }

                Console.ReadLine();
            }

        }

    }

}

运行效果如下图
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值