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);
            }
        }
  • 相关阅读:
    第二周总结
    第一次结组作业概述
    Spring_Bean的自动装配
    Spring_依赖注入
    Spring_配置
    第一周总结
    1680. Concatenation of Consecutive Binary Numbers
    1631. Path With Minimum Effort
    1657. Determine if Two Strings Are Close
    1673. Find the Most Competitive Subsequence
  • 原文地址:https://www.cnblogs.com/shidengyun/p/5610126.html
Copyright © 2011-2022 走看看