在项目中经常用到线程Thread,先做个简单记录,后面再完善下,方便以后参考。本人技术有限,如有不同见解之处,欢迎博友批评指正。

执行的线程Thread分无参数的,一个参数,多个参数的。直接看代码吧。

NetFramework4.0后,出现了Task(本质还是Thread),这个效率更高,分配资源更合理。

一、没有参数的

        static void Main(string[] args)
{
Console.WriteLine("主线程开始了...");
Console.WriteLine("主线程Thread:"+Thread.CurrentThread.ManagedThreadId);
Thread thread = new Thread(ThreadTestMthod);
thread.Start();
for (int i = ; i < ; i++)
{
Console.WriteLine("Num:"+i);
} Console.ReadKey();
}
static void ThreadTestMthod()
{
Console.WriteLine("当前线程Thread:"+Thread.CurrentThread.ManagedThreadId);
for (int i = ; i < ; i++)
{
Console.WriteLine("Num:"+i);
}
}

二、一个参数

        static void Main(string[] args)
{
Console.WriteLine("主线程开始了...");
Console.WriteLine("主线程Thread:" + Thread.CurrentThread.ManagedThreadId);
Thread threadParam = new Thread(ThreadTestMthodParam);
//或者Thread threadPapam2 = new Thread(new ThreadStart(() => ThreadTestMthodParam(100)));
//再或者 Thread threadPapam3 = new Thread(() => ThreadTestMthodParam(100));
threadParam.Start(); for (int i = ; i < ; i++)
{
Console.WriteLine("Num:" + i);
} Console.ReadKey();
}
static void ThreadTestMthodParam(object n)
{
int num = Convert.ToInt32(n);
Console.WriteLine("有1个参数Thread:" + Thread.CurrentThread.ManagedThreadId);
for (int i = ; i < num; i++)
{
Console.WriteLine("Num:" + i);
}
}

三、多个参数

其实看到上面你也想到了,可以利用后面的Lambda表达式来表示。

        static void Main(string[] args)
{
Console.WriteLine("主线程开始了...");
Console.WriteLine("主线程Thread:" + Thread.CurrentThread.ManagedThreadId);
Thread threadParams = new Thread(() => ThreadTestMthodParams(, ));
//或者Thread threadParams = new Thread(new ThreadStart(() => ThreadTestMthodParams(100, 200))); threadParams.Start(); for (int i = ; i < ; i++)
{
Console.WriteLine("Num:" + i);
} Console.ReadKey();
}
static void ThreadTestMthodParams(int min, int max)
{
Console.WriteLine("多个参数Thread:" + Thread.CurrentThread.ManagedThreadId);
for (int i = min; i < max; i++)
{
Console.WriteLine("Num:" + i);
}
}

用Task来操作

            Task t1 = new Task(ThreadTestMthod);
t1.Start(); Task t2 = new Task(() => ThreadTestMthodParams(,));
t2.Start();

C#多线程Thread的更多相关文章

  1. c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习

    c#中@标志的作用   参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/toke ...

  2. 2.匿名类,匿名类对象,private/protected/public关键字、abstract抽象类,抽象方法、final关键字的使用,多线程Thread类start方法原理

    package com.bawei.multithread; //注意:模板方法我们通常使用抽象类或者抽象方法!这里我们为了方便在本类中使用就没有使用抽象类/抽象方法 public class Tem ...

  3. 多线程-Thread和ThreadPool

    多线程原理 多线程都是基于委托的. 多线程优缺点 缺点: 1.导致程序复杂,开发调试维护困难,特别是线程交互. 2.线程过多导致服务器卡死,因为占用CPU 内存等资源. 优点: 1.良好的交互,特别对 ...

  4. Java多线程Thread

    转自:http://www.cnblogs.com/lwbqqyumidi/p/3804883.html Java总结篇系列:Java多线程(一)   多线程作为Java中很重要的一个知识点,在此还是 ...

  5. java 多线程--- Thread Runnable Executors

    java 实现多线程的整理: Thread实现多线程的两种方式: (1)继承 Thread类,同时重载 run 方法: class PrimeThread extends Thread { long ...

  6. python进阶学习笔记(四)--多线程thread

    在使用多线程之前,我们首页要理解什么是进程和线程. 什么是进程? 计算机程序只不过是磁盘中可执行的,二进制(或其它类型)的数据.它们只有在被读取到内存中,被操作系统调用的时候才开始它们的生命期.进程( ...

  7. php多线程thread开发与应用的例子

    Php多线程的使用,首先需要PHP5.3以上版本,并安装pthreads PHP扩展,可以使PHP真正的支持多线程,扩展如何安装请自行百度 PHP扩展下载:https://github.com/kra ...

  8. 多线程(Thread),其实很简单!

    目录:  1:线程简介 2:怎么操作线程      3:Thread的常用方法 4:简单的获奖机     5:应用程序域   线程:是Windows任务调度的最小单位.线程是程序中的一个执行流,每个线 ...

  9. 【C#多线程】C#多线程 Thread 开发基础

    引用 using System; using System.Threading; 多线程代码 Thread mainthread = new Thread(ExecuteThread); mainth ...

  10. android 多线程Thread,Runnable,Handler,AsyncTask

    先看两个链接: 1.http://www.2cto.com/kf/201404/290494.html 2. 链接1: android 的多线程实际上就是java的多线程.android的UI线程又称 ...

随机推荐

  1. Jmeter 集成Excel读写接口参数返回值

    输入VIN然后获取返回值json 串,拼接非规则json 标题头 以下是返回的json串 { "error": "success", "result& ...

  2. MVC部分视图的使用

    用户访问的视图:Index.cshtml @{ ViewBag.Title = "Home Page"; } <div class="jumbotron" ...

  3. P2913 [USACO08OCT]车轮旋转Wheel Rotation

    传送门 初始状态是 0,如果有 1 的连接,0 就变 1,如果还有 1 的连接,1 就变 0,如果是 0 的连接就不变 所以就是把答案异或上所有连接,不用考虑顺序,反正最终是一样的 #include& ...

  4. poj3040 发工资(贪心)

    题目传送门 题目大意:给一个人发工资,给出不同数量不同面额,(大面额一定是小面额的倍数),问最多能发几天,(每天实发工资>=应发工资). 思路:首先,将大于等于c的面额的钱直接每个星期给奶牛一张 ...

  5. day_10 函数名,闭包,迭代器

    1. 函数名的使用 1.函数名是一个变量,函数名储存的是函数的内存地址 2.函数名可以赋值给其他变量 3.函数名可以当容器类对象的元素 4.函数名可以当其他函数的参数 5.函数名可以做函数的返回值 2 ...

  6. Day04 流程控制 while 和for循环

    一.流程控制 if 判断 python中使用缩进来区分代码块的 语法 一: #python if 条件: 代码块1 代码块2 自上而下依次运行 语法二: # python if 条件一: 代码一 el ...

  7. Windows下使用pip安装Python模块

    打开cmd窗口: 找到pip安装路径: 拖动pip.exe到命令行窗口: 空格并输入“install 包名”,回车. ========================================= ...

  8. 1.Exadata技术演进

    V1-v2 和 HP Exadata 2-2 和 SUN 2011 3-2 4-2 5-2 2014底 2-2 混合运算 2-8 是大数据运算         问题1. 随着系统规模增加,传统数据库架 ...

  9. django DRF 图片路径问题

    问题描述:为什么DRF中有时候返回的json中图片是带域名的,有时候是不带域名的呢?(难受啊马飞~) 解答:带域名的结果是在view中对模型类序列化的,DRF在序列化图片的时候 会检查上下文有没有re ...

  10. springboot 启动的java进程默默终止

    首先说明这是一个灵异事件......... 场景1 :把之前用map实现的缓存用Redis重构,高高兴兴上线更新,10 分钟后,老板告诉我,项目停了,what ??? 像我这么帅气,英俊,聪明的人,更 ...