转载 自己学习的(简单多线程)

public  class  ThreadDemo
     {
         private  Thread threadOne;
         private  Thread threadTwo;
         private  ArrayList stringList;
         private  event  EventHandler OnNumberClear; //数据删除完成引发的事件
         public  static  void  Main()
         {
             ThreadDemo demo =  new  ThreadDemo(1000);
             demo.Action();
 
         }
         public  ThreadDemo( int  number)
         {
             Random random =  new  Random(1000000);
             stringList =  new  ArrayList(number);
             for  ( int  i = 0; i < number; i++)
             {
                 stringList.Add(random.Next().ToString());
             }
             threadOne =  new  Thread( new  ThreadStart(Run)); //两个线程共同做一件事情
             threadTwo =  new  Thread( new  ThreadStart(Run)); //两个线程共同做一件事情
             threadOne.Name =  "线程1" ;
             threadTwo.Name =  "线程2" ;
             OnNumberClear +=  new  EventHandler(ThreadDemo_OnNumberClear);
 
         }
         /// <summary>
         /// 开始工作
         /// </summary>
         public  void  Action()
         {
             threadOne.Start();
             threadTwo.Start();
         }
         /// <summary>
         /// 共同做的工作
         /// </summary>
         private  void  Run()
         {
             string  stringValue =  null ;
             while  ( true )
             {
                 Monitor.Enter( this ); //锁定,保持同步
                 stringValue = ( string )stringList[0];
                 Console.WriteLine(Thread.CurrentThread.Name +  "删除了"  + stringValue);
                 stringList.RemoveAt(0); //删除ArrayList中的元素
                 if  (stringList.Count == 0)
                 {
                     OnNumberClear( this new  EventArgs()); //引发完成事件
                 }
                 Monitor.Exit( this ); //取消锁定
                 Thread.Sleep(5);
             }
         }
 
         //执行完成之后,停止所有线程
         void  ThreadDemo_OnNumberClear( object  sender, EventArgs e)
         {
             Console.WriteLine( "执行完了,停止了所有线程的执行。" );
             threadTwo.Abort();
             threadOne.Abort();
 
         }
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值