分享

多线程Demo

 若生安饶 2011-08-11
using System;
using System.Linq;
using System.Text;
using System.Threading;
using System.Collections;
using System.Collections.Generic;
namespace ConsoleDemo
{
 public class ThreadDemo
 {
  private Thread thread1;
  private Thread thread2;
  private ArrayList arryList;
  private event EventHandler message;
  public ThreadDemo(int number)
  {
   Random random = new Random(100000);
   arryList = new ArrayList(number);
   for (int i = 0; i < number; i++)
   {
    arryList.Add(random.Next(0,10).ToString());
   }
   thread1 = new Thread(new ThreadStart(Run));
   thread2 = new Thread(new ThreadStart(Run));
   thread1.Name = "线程1";
   thread2.Name = "线程2";
   message += new EventHandler(ThreadDemo_message);
  }
  void ThreadDemo_message(object sender, EventArgs e)
  {
   Console.WriteLine("删除完毕!");
   Console.Read();
   thread1.Abort();
   thread2.Abort();
  }
  public void Action()
  {
   thread1.Start();
   thread2.Start();
  }
  public void Run()
  {
   string strValue = null;
   while (true)
   {
    Monitor.Enter(this); //锁定,保持同步
    strValue = (string)arryList[0];
    Console.WriteLine(Thread.CurrentThread.Name+"删除了"+strValue);
    arryList.RemoveAt(0);
    if (arryList.Count == 0)
    {
     message(this,new EventArgs());
    }
    Monitor.Exit(this);
    Thread.Sleep(5);
   }
  }
 }
}
 
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleDemo
{
 class Program
 {
  static void Main(string[] args)
  {
   ThreadDemo threadDemo = new ThreadDemo(4);
   threadDemo.Action();
  }
 }
}
 
//应用委托
using System;
using System.Linq;
using System.Text;
using System.Threading;
using System.Collections;
using System.Collections.Generic;
namespace ConsoleDemo
{
 public class ThreadDemo
 {
  private Thread thread1;
  private Thread thread2;
  private ArrayList arryList;
  //private event EventHandler message;
  private delegate void message();
  public ThreadDemo(int number)
  {
   Random random = new Random(100000);
   arryList = new ArrayList(number);
   for (int i = 0; i < number; i++)
   {
    arryList.Add(random.Next(0,10).ToString());
   }
   thread1 = new Thread(new ThreadStart(Run));
   thread2 = new Thread(new ThreadStart(Run));
   thread1.Name = "线程1";
   thread2.Name = "线程2";
   //message += new EventHandler(ThreadDemo_message);
   
   
  }
  void Message()
  {
   Console.WriteLine("删除完毕!");
   Console.Read();
   thread1.Abort();
   thread2.Abort();
  }
  void ThreadDemo_message(object sender, EventArgs e)
  {
   Console.WriteLine("删除完毕!");
   Console.Read();
   thread1.Abort();
   thread2.Abort();
  }
  public void Action()
  {
   thread1.Start();
   thread2.Start();
  }
  public void Run()
  {
   string strValue = null;
   while (true)
   {
    Monitor.Enter(this); //锁定,保持同步
    strValue = (string)arryList[0];
    Console.WriteLine(Thread.CurrentThread.Name+"删除了"+strValue);
    arryList.RemoveAt(0);
    if (arryList.Count == 0)
    {
     message message1 = new message(Message);
     message1();
    }
    Monitor.Exit(this);
    Thread.Sleep(2);
   }
   
  }
 }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多