读C#线程及线程池笔记
来源:互联网 发布:win10关闭网络唤醒 编辑:程序博客网 时间:2024/05/29 15:09
Thread:为防止主线程执行耗时的操作,需要开启一个线程运行这个操作。假设该耗时的操作为run()
1.线程的启动:
1,开启一个线程(无参数传入的情况),两种方法可以互换写
a,Thread myThread=new Thread(run);
myThread.start();
b,Thread myThread=new Thread(new ThreadStart(run))
myThread.start();
2,开启一个线程(有参数传入的情况)
a,Thread myThread=new Thread(run);
myThread.start(run方法的参数);
b,Thread myThread=new Thread(new ParameterizedThreadStart(run));
myThread.start(run方法的参数);
3,利用静态类线程池 ThreadPooL 可以减少创建和销毁线程的系统开销,缩短应用程序的响应时间。
核心方法为:QueueUserWorkItem方法,它有两种重载形式,如下:
public static bool QueueUserWorkItem(WaitCallback callBack):将方法排入队列以便执行。此方法在有线程池线程变得可用时执行。
public static bool QueueUserWorkItem(WaitCallback callBack,Object state):将方法排入队列以便执行,并指定包含该方法所用数据的对象。此方法在有线程池线程变得可用时执行。
其中WaitCallback是委托delegate类型,它的声明为:public delegate void WaitCallback(Object state)
具体用法如下:
public class myThreadPool{
public void run1(Object state){}
public void run2(Object state){}//因为WaitCallback的参数类型为Object,所以关联的方法也要定义Object类型的参数
public myThreadPool(){
}
public void doWork(){
ThreadPool.QueueUserWorkItem(new WaitCallback(run1));
ThreadPool.QueueUserWorkItem(new WaitCallback(run2) );
}
}
static void mian(string[] args){
myThreadPool mTP=new myThreadPool();
myThreadPool.doWork();
}
- 读C#线程及线程池笔记
- C#线程池学习笔记
- c# 线程笔记2
- C#学习笔记-线程
- C#线程用法及跨线程访问
- 读C#线程方面知识做笔记
- C#线程与线程池
- C#浅谈线程池(上):线程池的作用及CLR线程池
- C#浅谈线程池(中):独立线程池的作用及IO线程池
- 创建线程及线程池
- C#学习笔记 线程操作
- C#学习笔记 线程同步
- C#学习笔记之线程
- C#线程学习笔记2
- 《C++ Concurrency in Action》笔记30 高级线程管理——线程池及中断线程
- Android线程及进程笔记
- .Net C# 线程池
- C# 线程池示例
- 归并排序的3种实现
- 面向对象
- 学习笔记--Ajax:JSON格式返回数据
- Spring4.1.4 bean的加载与赋值
- 21. Merge Two Sorted Lists
- 读C#线程及线程池笔记
- 对HTTPCONNECTION的理解
- jsp的3个编译指令,7个动作指令,9个内置对象
- "remote:error:refusing to update checked out branch:refs/heads/master"的解决办法
- 淘宝秒杀系统
- iOS使用CocoaPods安装失败解决办法
- JavaScript的设计缺陷?浮点运算:0.1 + 0.2 != 0.3
- poj-3299-Humidex
- python if __name__ == '__main__':(有例子就是好理解)