1 class ThreadDemo
2 {
3 private Thread[] threads;
4 private int thrs = 10;//线程数量
5 private ArrayList stringList;
6 private event EventHandler OnNumberClear;//数据删除完引发的事件
7 public ThreadDemo(int number)
8 {
9 stringList = new ArrayList();
10 for (int i = 0; i < number; i++)
11 {
12 stringList.Add(i.ToString());
13 }
14 threads = new Thread[thrs];
15 for (int i = 0; i < thrs; i++)
16 {
17 threads[i] = new Thread(new ParameterizedThreadStart(run));
18 threads[i].Name = "线程:" + (i + 1);
19 }
20 OnNumberClear += new EventHandler(ThreadDemo_OnNumberClear);
21 }
22 public void Action()
23 {
24 for (int i = 0; i < thrs; i++)
25 {
26 threads[i].Start((object)"Prince");
27 }
28 }
29 //注意参数一定要是 object 类型。多参数的话可以考虑用 struct类型
30 public void run(object para)
31 {
32 string stringValue = null;
33 while (true)
34 {
35 Monitor.Enter(this);
36 stringValue = (string)stringList[0];
37 Console.WriteLine(Thread.CurrentThread.Name + "删除了:" + para + " === " + stringValue);
38 stringList.RemoveAt(0);
39 if (stringList.Count == 0)
40 {
41 OnNumberClear(null, null);
42 }
43 Monitor.Exit(this);
44 Thread.Sleep(2000);
45 }
46 }
47 void ThreadDemo_OnNumberClear(object sender, EventArgs e)
48 {
49 Console.WriteLine("执行完所有的线程");
50 for (int i = 0; i < thrs; i++)
51 threads[i].Abort();
52 }
53 }
2 {
3 private Thread[] threads;
4 private int thrs = 10;//线程数量
5 private ArrayList stringList;
6 private event EventHandler OnNumberClear;//数据删除完引发的事件
7 public ThreadDemo(int number)
8 {
9 stringList = new ArrayList();
10 for (int i = 0; i < number; i++)
11 {
12 stringList.Add(i.ToString());
13 }
14 threads = new Thread[thrs];
15 for (int i = 0; i < thrs; i++)
16 {
17 threads[i] = new Thread(new ParameterizedThreadStart(run));
18 threads[i].Name = "线程:" + (i + 1);
19 }
20 OnNumberClear += new EventHandler(ThreadDemo_OnNumberClear);
21 }
22 public void Action()
23 {
24 for (int i = 0; i < thrs; i++)
25 {
26 threads[i].Start((object)"Prince");
27 }
28 }
29 //注意参数一定要是 object 类型。多参数的话可以考虑用 struct类型
30 public void run(object para)
31 {
32 string stringValue = null;
33 while (true)
34 {
35 Monitor.Enter(this);
36 stringValue = (string)stringList[0];
37 Console.WriteLine(Thread.CurrentThread.Name + "删除了:" + para + " === " + stringValue);
38 stringList.RemoveAt(0);
39 if (stringList.Count == 0)
40 {
41 OnNumberClear(null, null);
42 }
43 Monitor.Exit(this);
44 Thread.Sleep(2000);
45 }
46 }
47 void ThreadDemo_OnNumberClear(object sender, EventArgs e)
48 {
49 Console.WriteLine("执行完所有的线程");
50 for (int i = 0; i < thrs; i++)
51 threads[i].Abort();
52 }
53 }
浙公网安备 33010602011771号