阿伦.艾弗森现状:多线程Demo

来源:百度文库 编辑:九乡新闻网 时间:2024/05/02 00:24:05
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);
   }   
  } }
}