zoukankan      html  css  js  c++  java
  • C#线程池ThreadPool

    线程池可以减少频繁的线程创建和销毁对系统性能的影响。

    ThreadPool默认是后台属性,IsBackground是true。

    线程池通过线程命名空间的ThreedPool类来实现,要请求由线程池中的一个线程来处理你的任务,需要调用QueueUserWorkItem方法。

    要注意,当你向线程池提交一个人物请求后,你就无法再取消它了。另外,线程池中每个线程按照默认的优先级进行。

    向线程池提交任务使用WaitCallback委托。线程池会对这个任务自动调用一个线程来处理。

    public delegate void WaitCallback(object state);

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    namespace ThreadPoolTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                int newThreads;
                int nCompletionPortThreads;
    
                ThreadPool.SetMaxThreads(10, 200);  //设置线程池的大小
    
                //获取辅助线程数目和异步IO线程数据
                ThreadPool.GetMaxThreads(out newThreads, out nCompletionPortThreads);
                Console.WriteLine("辅助线程数目{0},异步IO线程数目{1}", newThreads, nCompletionPortThreads);
    
    
                for (int i = 0; i < 5; i++)
                {
                    ThreadPool.QueueUserWorkItem(JobForAThread);
                }
    
                Thread.Sleep(3000);
                Console.ReadKey();
            }
    
            static void JobForAThread(object state)
            {
                for (int i = 0; i < 3; i++)
                {
                    Console.WriteLine("循环第{0}次,当前运行的线程ID是{1}", i, Thread.CurrentThread.ManagedThreadId);
                    Thread.Sleep(50);
                }
            }
        }
    }
  • 相关阅读:
    String常用方法
    测试
    mongo aggregate group, group使用
    jquery ajax封装添加默认错误提示
    js时间格式化
    本地项目导入远程git仓库
    java设计模式:适配器模式
    mysql if示例
    hibernate指定查询字段
    js window resize延时
  • 原文地址:https://www.cnblogs.com/Mysterious/p/3429552.html
Copyright © 2011-2022 走看看