花呗、白条\/信客服:[3 3 1 5 7 5 6 4 4],分期乐提现,xin用卡秒提,、来分期、安逸花、任性付各种额度提现,花呗、白条\/信客服:[3 3 1 5 7 5 6 4 4]专业迅速秒回款,可当面操作,可远程操作!流程简单回款迅速,操作专业不卡单几分钟就搞定!
多线程,一个多么熟悉的词汇,作为一名程序员,我相信无论是从事什么开发语言,都能够轻轻松松说出几种实现多线程的方式,并且在实际工作种也一定用到过多线程,比如:定时器、异步作业等等,如果你说你没有用过多线程,我怀疑你是不是一名程序员,哈哈。
哈哈,言归正传,今天我们要说说c#中的多线线程哪一些事,当然c#在实现多线程上有多种方式,比如:Threads、Action、ThreadPool、Task、Parallel等,当然每一种方式都用其优点和缺点,也有其应用场景,在此不一一说明,今天我们主要以task为例,来一起聊聊task的使用,也就当着一次自我总结提炼罢了。
为什么要用多线程
其实我们在实际使用过程中,使用多线程的目的其实即使为了实现异步+并行,异步:是相对同步的,同步就是一个流程安装一个流程执行完毕,异步就是在不影响主流程的执行同时,可以执行其他流程,这也就是达到了几个逻辑并行执行的效果。当然了,不是说异步就完全是独立执行,相互间就没有关联关系,其实在异步的同时,也可以在特定节点等待阻塞等待异步结果啦。说了半天废话,不要走开,主题才刚刚开始,下面以实际例子来演绎task的实际使用吧!
如何创建和运行一个task
微软就是那么6逼,在创建和执行一个task时,都给大家提供了多种方式来实现,大家可以根据其具体的使用场景和习惯来选择最适合的方式,下面通过代码来简单说明如下的三种实现方式:
复制代码
/// <summary>
/// 简单的task创建方式演示
/// </summary>
private static void TaskCreatFun()
{
// 其一、通过传统的 new 方式来实例化一个task对象,这种方式需要手动通过start来启动
Task newTask = new Task(() =>
{
Thread.Sleep(1000);
Console.WriteLine($"Hello Engineer, 我是 new 的一个task,线程ID:Thread.CurrentThread.ManagedThreadId}");
});
// 启动 tsak
newTask.Start();
// 其二、通过工厂 factory 来生成一个task对象,并自启动
Task factoryTask = Task.Factory.StartNew(() =>
{
Thread.Sleep(1000);
Console.WriteLine($"Hello Engineer, 我是 factory 生产 的一个task,线程ID:Thread.CurrentThread.ManagedThreadId}");
});
// 其三、通过 Task.Run(Action action) 来创建一个自启动task
Task runTask = Task.Run(() =>
{
Thread.Sleep(1000);
Console.WriteLine($"Hello Engineer, 我是 Task.Run 创建一个自启动task,线程ID:Thread.CurrentThread.ManagedThreadId}");
});
runTask.RunSynchronously();
Console.WriteLine($"Hello Engineer, 我是主线程啦!线程ID{Thread.CurrentThread.ManagedThreadId}");
原文地址:https://www.cnblogs.com/dfdf55/p/12113746.html