Thread thread = new Thread(threadStart);//传入委托
thread.start//开启线程
thread.Abort//终结的线程
thread.ResetAbort(); //终结的线程继续执行
thread.Suspend//线程挂起可以等待在次被使用
thread.Resume//恢复被挂起的线程可能会有延时
ThreadPool.QueueUserWorkItem
ThreadPool.QueueUserWorkItem(WaitCallback(WaitWork), object);
将方法提交到线程池里等待执行里面的参数第一个是代表回调方法,另一个是WaitCallback传的参数
ThreadPool.SetMinThreads和ThreadPool.SetMaxThreads
ThreadPool.SetMinThreads(2,2);
前面的参数是代表线程池中复制想成的最大数目,后面是代表线程的最大数目
ThreadPool.SetMaxThreads(10,10);
SetMinThreads和SetMaxThreads是线程池中最小线程数和最大线程
public class Myclass()
{
private int num=0;
public void Locknum()
{
lock(this)
{
num++;
}
}
}
当多个线程同时访问同一个对象实例的代码块时,只有一个线程可以执行该代码块,其他线程需要等待该线程执行完毕后才能继续执行。lock(this)锁定的是当前对象实例,即多个线程需要竞争同一个锁定对象,只有一个线程可以拥有该对象实例的锁定权。以上示列
lock的用法:
public class Myclass()
{
private int num=0;
private Object obj=new Object();
public void Locknum()
{
lock(obj)
{
num++;
}
}
}
当多个线程同时访问同一个被锁定的object实例的代码块时,只有一个线程可以执行该代码块,其他线程需要等待该线程执行完毕后才能继续执行。lock(object)锁定的是指定的object实例,多个线程需要竞争同一个锁定对象,以上代码块
总结Lock在多线程环境下,lock关键字是实现线程同步的重要手段,但不同的锁定方式有着不同的优缺点。在选择锁定方式时,需要考虑到线程竞争情况、锁定范围、代码复杂度以及程序性能等因素。