1.异步委托开启线程

 public static void Main(string[] args)
{
  Action<int,int> a=add;
  a.BeginInvoke(,,null,null);//前两个是add方法的参数,后两个可以为空
  Console.WriteLine("main()");
  Console.ReadKey();
}
static void add(int a,int b)
{
  Console.WriteLine(a+b);
}

2.通过Thread类开启线程

 public class Program
{
public static void Main(string[] args)
{
Thread t1;
Thread t2;
t1 = new Thread(SetInfo1);
t2 = new Thread(SetInfo2);
t1.Start();
//线程睡眠
//t1.Join(1000);
//挂起线程
t1.Suspend();
//继续执行线程
t1.Resume();
//结束线程
//t1.Abort(); t2.Start();
Console.ReadKey();
}
//奇数线程
public static void SetInfo1()
{
for (int i = ; i < ; i++)
{
if (i % != )
{
Console.WriteLine("奇数为" + i);
}
}
}
//偶数线程
public static void SetInfo2()
{
for (int i = ; i < ; i++)
{
if (i % == )
{
Console.WriteLine("偶数为" + i);
}
}
}
}

3.通过线程池开启线程

    //线程池可以看做容纳线程的容器;一个应用程序最多只能有一个线程池;ThreadPool静态类通过QueueUserWorkItem()方法将工作函数排入线程池; 每排入一个工作函数,就相当于请求创建一个线程;
//线程池的作用:
//1、线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少了创建和销毁线程所需的时间,从而提高效率。
//2、如果一个线程的时间非常长,就没必要用线程池了(不是不能作长时间操作,而是不宜。),况且我们还不能控制线程池中线程的开始、挂起、和中止
public class Program
{
public static void Main(string[] args)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(TestThreadPool), new string[] { "hjh" });
Console.ReadKey();
}
public static void TestThreadPool(object state)
{
string[] arry = state as string[];//传过来的参数值
int workerThreads = ;
int CompletionPortThreads = ;
ThreadPool.GetMaxThreads(out workerThreads, out CompletionPortThreads);
Console.WriteLine(DateTime.Now.ToString() + "---" + arry[] + "--workerThreads=" + workerThreads + "--CompletionPortThreads" + CompletionPortThreads);
}
}

4.通过任务Task开启线程

 public class Program
{
public static void Main(string[] args)
{
Task task = new Task(DownLoadFile_My);
task.Start();
Console.ReadKey();
}
static void DownLoadFile_My()
{
Console.WriteLine("开始下载...线程ID:"+Thread.CurrentThread.ManagedThreadId);
Thread.Sleep();
Console.WriteLine("下载完成!");
}
}

 new Thread(() =>
{
try
{
//运行的代码
}
catch (Exception ex)
{
}
}).Start();

最新文章

  1. HBase如何选取split point
  2. awk打印出当前行的上一行
  3. 转:Transform Web.Config when Deploying a Web Application Project
  4. Grovvy之解析XML文件
  5. Grunt - 前端开发所见即所得
  6. python字符串替换的2种有效方法
  7. linux根目录详解
  8. U3D 摄像机镜头控制
  9. js动态加载html,加载后的页面元素某些事件失效的解决方案
  10. make file 详
  11. MYSQL @、@@、@x
  12. 使用AppCompat_v7 21.0.0d的几个兼容问题
  13. 【CJOJ2440】大话西游(树链剖分)
  14. VMware 虚拟机运行卡慢的解决办法
  15. C# DataGridView 动态添加列和调整列顺序
  16. js压箱底的宝贝
  17. Websphere MQ Cluster
  18. Linux内核分析(第五周)
  19. 第二个Sprint冲刺第五天(燃尽图)
  20. Android 7.0真实上手体验

热门文章

  1. 使用linux服务器安装wordpress博客详细教程
  2. bfs--P1443 马的遍历
  3. PDO是一个“数据库访问抽象层”
  4. 吴裕雄--天生自然ShellX学习笔记:Shell 传递参数
  5. PAT Basic 1013 数素数 (20) [数学问题-素数]
  6. python编程:从入门到实践----第六章:字典&gt;练习
  7. github新手使用教程
  8. c++语法(2)
  9. selector.xml的使用
  10. unless|until|LABEL|{}|last|next|redo| || |//|i++|++i