C#多线程Thread
在项目中经常用到线程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的更多相关文章
- 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.匿名类,匿名类对象,private/protected/public关键字、abstract抽象类,抽象方法、final关键字的使用,多线程Thread类start方法原理
package com.bawei.multithread; //注意:模板方法我们通常使用抽象类或者抽象方法!这里我们为了方便在本类中使用就没有使用抽象类/抽象方法 public class Tem ...
- 多线程-Thread和ThreadPool
多线程原理 多线程都是基于委托的. 多线程优缺点 缺点: 1.导致程序复杂,开发调试维护困难,特别是线程交互. 2.线程过多导致服务器卡死,因为占用CPU 内存等资源. 优点: 1.良好的交互,特别对 ...
- Java多线程Thread
转自:http://www.cnblogs.com/lwbqqyumidi/p/3804883.html Java总结篇系列:Java多线程(一) 多线程作为Java中很重要的一个知识点,在此还是 ...
- java 多线程--- Thread Runnable Executors
java 实现多线程的整理: Thread实现多线程的两种方式: (1)继承 Thread类,同时重载 run 方法: class PrimeThread extends Thread { long ...
- python进阶学习笔记(四)--多线程thread
在使用多线程之前,我们首页要理解什么是进程和线程. 什么是进程? 计算机程序只不过是磁盘中可执行的,二进制(或其它类型)的数据.它们只有在被读取到内存中,被操作系统调用的时候才开始它们的生命期.进程( ...
- php多线程thread开发与应用的例子
Php多线程的使用,首先需要PHP5.3以上版本,并安装pthreads PHP扩展,可以使PHP真正的支持多线程,扩展如何安装请自行百度 PHP扩展下载:https://github.com/kra ...
- 多线程(Thread),其实很简单!
目录: 1:线程简介 2:怎么操作线程 3:Thread的常用方法 4:简单的获奖机 5:应用程序域 线程:是Windows任务调度的最小单位.线程是程序中的一个执行流,每个线 ...
- 【C#多线程】C#多线程 Thread 开发基础
引用 using System; using System.Threading; 多线程代码 Thread mainthread = new Thread(ExecuteThread); mainth ...
- android 多线程Thread,Runnable,Handler,AsyncTask
先看两个链接: 1.http://www.2cto.com/kf/201404/290494.html 2. 链接1: android 的多线程实际上就是java的多线程.android的UI线程又称 ...
随机推荐
- php小试牛刀
[构造函数] function __construct() [析构函数] 当某个对象的所有引用被删除,或者对象被显式的销毁时会执行析构函数 function __destruct() [静态方法] p ...
- Js 处理 错误图片...(不用jquery)
document.addEventListener("error", function (e) { var elem = e.target; if (elem.tagName.to ...
- ARM,CPU相关概念
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 相关链接: ARM内核和架构都是什么意思,它们到底是什么关系?:ht ...
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_对象的相等性和同一性
[重写Equals注意的事项] 1. Equals 必须是自反的:--x.Equals(x)肯定为 true 2. Equals 必须是对称的:--x.Equals(y)肯定返回与y.Equals(x ...
- C#中web项目使用log4net日志
我准备把log4net的实现方法放在一个类库项目中,别的项目直接引用该类库,即可进行日志的记录,操作步骤如下: 1.下载log4net.dll文件 2.在解决方案下创建类库项目 3.把log4net. ...
- NMS_非极大值抑制(转)
NMS(non maximum suppression),中文名非极大值抑制,在很多计算机视觉任务中都有广泛应用,如:边缘检测.目标检测等. 这里主要以人脸检测中的应用为例,来说明NMS,并给出Mat ...
- 【ACM】三点顺序
三点顺序 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆 ...
- NIOGoodDemo
Java NIO是在jdk1.4开始使用的,它既可以说成“新I/O”,也可以说成非阻塞式I/O.下面是java NIO的工作原理: 1. 由一个专门的线程来处理所有的 IO 事件,并负责分发. 2. ...
- MySQL 0 学习
ubuntu 安装mysql 创建用户 以及外部如何可视化连接的 方法 https://www.linuxidc.com/Linux/2017-01/139502.htm 2.3 MyS ...
- git知识点总结
集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器.集中式版本控制系统最大的 ...