class ThreadDemo { private Thread[] threads; private int thrs = 10;//线程数量 private ArrayList stringList; private event EventHandler OnNumberClear;//数据删除完引发的事件 public ThreadDemo(int number) { stringList = new ArrayList(); for (int i = 0; i < number; i++) { stringList.Add(i.ToString()); } threads = new Thread[thrs]; for (int i = 0; i < thrs; i++) { threads[i] = new Thread(new ParameterizedThreadStart(run)); threads[i].Name = "线程:" + (i + 1); } OnNumberClear += new EventHandler(ThreadDemo_OnNumberClear); } public void Action() { for (int i = 0; i < thrs; i++) { threads[i].Start((object)"Prince"); } } //注意参数一定要是 object 类型。多参数的话可以考虑用 struct类型 public void run(object para) { string stringValue = null; while (true) { Monitor.Enter(this); stringValue = (string)stringList[0]; Console.WriteLine(Thread.CurrentThread.Name + "删除了:" + para + " === " + stringValue); stringList.RemoveAt(0); if (stringList.Count == 0) { OnNumberClear(null, null); } Monitor.Exit(this); Thread.Sleep(2000); } } void ThreadDemo_OnNumberClear(object sender, EventArgs e) { Console.WriteLine("执行完所有的线程"); for (int i = 0; i < thrs; i++) threads[i].Abort(); } }
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wangzi041/archive/2009/05/05/4151627.aspx
|
请发表评论