zoukankan      html  css  js  c++  java
  • 多线程19-线程池批量插入线程

        class Program
        {
            static void UseThreads(int numberOfOperations)
            {
                using (var countdown = new CountdownEvent(numberOfOperations))
                {
                    Console.WriteLine("Scheduling work by creating threads");
                    for (int i = 0; i < numberOfOperations; i++)
                    {
                        var thread = new Thread(() =>
                        {
                            Console.WriteLine("current Thread Id={0}", Thread.CurrentThread.ManagedThreadId);
                            Thread.Sleep(TimeSpan.FromSeconds(0.1));
                            countdown.Signal();
                        });
                        thread.Start();
                    }
                    countdown.Wait();
                    Console.WriteLine();
                }
            }
            static void UseThreadPool(int numberOfOperations)
            {
                using (var countdown = new CountdownEvent(numberOfOperations))
                {
                    Console.WriteLine("Starting work on a threadPool");
                    for (int i = 0; i < numberOfOperations; i++)
                    {
                        ThreadPool.QueueUserWorkItem(x =>
                         {
                             Console.WriteLine("current Thread Id={0}", Thread.CurrentThread.ManagedThreadId);
                             Thread.Sleep(TimeSpan.FromSeconds(0.1));
                             countdown.Signal();
                         });
                    }
                    countdown.Wait();
                    Console.WriteLine();
                }
            }
            static void Main()
            {
                const int numberOfOpeartions = 3000;
                var sw = new Stopwatch();
                sw.Start();
                UseThreads(numberOfOpeartions);
                sw.Stop();
                Console.WriteLine("Excution time using threads:{0}", sw.ElapsedMilliseconds);

                sw.Reset();
                sw.Start();
                UseThreadPool(numberOfOpeartions);
                sw.Stop();
                Console.WriteLine("Execution time using threads:{0}", sw.ElapsedMilliseconds);
            }
        }
  • 相关阅读:
    内存:你跑慢点行不行?CPU:跑慢点你养我吗?内存:我不管!(内附超全思维导图)
    又能扯皮了!没内存了还能看片?
    写给大忙人看的进程和线程
    Python面试常用的高级用法,怎么动态创建类?
    LeetCode 74,直击BAT经典面试题
    LeetCode 73,为什么第一反应想到的解法很有可能是个坑?
    Golang基础教程——map使用篇
    手把手教你学numpy,从此数据处理不再慌【三】
    从辗转相除法到求逆元,数论算法初体验
    深入了解机器学习决策树模型——C4.5算法
  • 原文地址:https://www.cnblogs.com/shidengyun/p/5610126.html
Copyright © 2011-2022 走看看