博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#线程池ThreadPool实例详解
阅读量:5129 次
发布时间:2019-06-13

本文共 2716 字,大约阅读时间需要 9 分钟。

1. 如何查看线程池的最大线程数和最小线程数

static void Main(string[] args)        {            Console.WriteLine("----------线程池开始,线程ID是{0}-----------------", Thread.CurrentThread.ManagedThreadId);            int workthread;            int iothread;            ThreadPool.GetMaxThreads(out workthread, out iothread);            Console.WriteLine("Max Work Thread:{0} Max I/O Thread:{1}",workthread,iothread);            ThreadPool.GetMinThreads(out workthread, out iothread);            Console.WriteLine("Mix Work Thread:{0} Mix I/O Thread:{1}", workthread, iothread);            Console.WriteLine("----------线程池结束,线程ID是{0}-----------------", Thread.CurrentThread.ManagedThreadId);            Console.Read();        }

2. 如何设置线程池的最大线程数和最小线程数

static void Main(string[] args)        {            Console.WriteLine("----------线程池开始,线程ID是{0}-----------------", Thread.CurrentThread.ManagedThreadId);            int workthread = 8;            int iothread = 8;            ThreadPool.SetMaxThreads(workthread, iothread);            Console.WriteLine("Max Work Thread:{0} Max I/O Thread:{1}",workthread,iothread);            ThreadPool.SetMinThreads(workthread, iothread);            Console.WriteLine("Mix Work Thread:{0} Mix I/O Thread:{1}", workthread, iothread);            Console.WriteLine("----------线程池结束,线程ID是{0}-----------------", Thread.CurrentThread.ManagedThreadId);            Console.Read();        }

3. ThreadPool线程启动

static void Main(string[] args)        {            Console.WriteLine("----------线程池开始,线程ID是{0}-----------------", Thread.CurrentThread.ManagedThreadId);            for (int i = 0; i < 5; i++)            {                string name = string.Format("ThreadPool_{0}", i);                WaitCallback method = (t) => Program.TestThread(t.ToString());                ThreadPool.QueueUserWorkItem(method,name);            }            Console.WriteLine("----------线程池结束,线程ID是{0}-----------------", Thread.CurrentThread.ManagedThreadId);            Console.Read();        }        static void TestThread(string name)        {            Console.WriteLine("TestThread Start name:{0} 当前线程id:{1} 当前时间:{2}", name, Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("yy-MM-dd hh:mm:ss.fff"));            long sum = 0;            for (int i = 0; i < 10000000; i++)            {                sum += i;            }            Console.WriteLine("TestThread End name:{0} 当前线程id:{1} 当前时间:{2}", name, Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("yy-MM-dd hh:mm:ss.fff"));        }

4. ThreadPool线程回收

ThreadPool线程池会自动回收。

5. ThreadPool线程池等待

可以通过ManualResetEvent信号量来实现,代码如下:

6. ThreadPool返回值

没有提供方法,可以自己定义,代码如下:

7. ThreadPool回调方法

没有提供方法,可以自己定义,代码如下:

转载于:https://www.cnblogs.com/yangxi1081/p/9700111.html

你可能感兴趣的文章
nginx --rhel6.5
查看>>
Eclipse Python插件 PyDev
查看>>
selenium+python3模拟键盘实现粘贴、复制
查看>>
第一篇博客
查看>>
typeof与instanceof的区别
查看>>
网站搭建(一)
查看>>
SDWebImage源码解读之SDWebImageDownloaderOperation
查看>>
elastaticsearch
查看>>
postgreSQL 简单命令操作
查看>>
Spring JDBCTemplate
查看>>
Radon变换——MATLAB
查看>>
第五章笔记
查看>>
Iroha and a Grid AtCoder - 1974(思维水题)
查看>>
gzip
查看>>
转负二进制(个人模版)
查看>>
LintCode-Backpack
查看>>
查询数据库锁
查看>>
[LeetCode] Palindrome Number
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
SQL更新某列包含XX的所有值
查看>>