欢迎访问我的博客 https://javascript.shop

ThreadPool学习草稿1

原文发布时间为:2010-10-27 —— 来源于本人的百度文章 [由搬家工具导入]

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace TestThreadPool
{
    class Program
    {
        static object locker = new object();
        static int runningThreads = 0;

        static void Main(string[] args)
        {
            try
            {
                ThreadPool.SetMaxThreads(4, 4); //设置最大线程数 using System.Threading;

                runningThreads = 10;
                for (int i = 0; i < runningThreads; i++)
                {

                    ThreadPool.QueueUserWorkItem(new WaitCallback(Auto), i);//线程池指定线程执行Auto方法
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            int iWhileNumber = 0;

            lock (locker)
            {
                while (runningThreads > 0)
                {
                    Monitor.Wait(locker);
                    iWhileNumber++;
                }
            }
            Console.WriteLine("结束了,共循环了" + iWhileNumber + "次");
            //Environment.Exit(0);
            Console.ReadLine();
        }

        public static void Auto(object i)//多线程执行的方法
        {
            try
            {
                int d = 4 / (int)i;
                if (string.Equals(i, 2))
                {
                    Thread.Sleep(1000);
                }
                Console.WriteLine(i.ToString());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                lock (locker)
                {
                    runningThreads--;
                    Monitor.Pulse(locker);
                }
            }
        }
    }
}

posted @ 2017-07-14 00:56  孑孓子  阅读(88)  评论(0编辑  收藏  举报
欢迎访问我的博客 https://javascript.shop