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); } } }
} |
|