⾯试必备:请问C#中Task和Thread有区别吗?如果有请简述区别
简述:
Task和Thread都能创建⽤多线程的⽅式执⾏代码,但它们有较⼤的区别。
Task是将多个操作封装成⼀个概念上原⼦操作。但这个操作由哪个Thread甚⾄多个Thread来处理处理你并不清楚。总之就是可以被正常完成。
Thread仅仅是⼀条线程,所有操作都是这个Thread⼀个完成的。
thread是单核多线程,task是多核多线程。
aspnet和net的区别Task较新,发布于.NET 4.5,能结合新的async/await代码模型写代码,它不⽌能创建新线程,还能使⽤线程池(默认)、单线程等⽅式编程,在UI编程领域,Task还能⾃动返回UI线程上下⽂,还提供了许多便利API以管理多个Task。⽤表格总结如下:
区别TaskThread
.NET 版本 4.5+1.1
async/await⽀持不⽀持
创建新线程⽀持⽀持
线程池/单线程⽀持不⽀持
返回主线程⽀持不⽀持
管理API⽀持不⽀持
开始⼀个Task ,Task.Run
开始⼀个Task最简单的办法就是使⽤Task.Run(4.5,4.0的时候是Task.Factory.StartNew)传⼊⼀个Action委托即可(例⼦task)
•
Task.Run( => { Console.WriteLine( "do it"); });
•Task默认使⽤线程池,也就是后台线程:当主线程结束时,你创建所有的tasks都会结束。
•Task.Run返回⼀个Task对象,可以使⽤它来监视其过程
•在Task.Run之后,我们没有调⽤Start,因为该⽅法创建的是“热”任务(hot task)
•可以通过task的构造函数创建“冷”任务(cold task),但开发中很少这么⼲
•通过Task的Status属性来跟踪task的执⾏状态。
出处:⽹络整理
版权申明:本⽂来源于⽹友收集或⽹友提供,仅供学习交流之⽤,如果有侵权,请转告版主或者留⾔,本⽴即删除。
⽀持⼩微:
腾讯云搞活动了?玩服务器的可以搞搞。就这⼏天时间。
轻量 1C2G6M 60GB SSD盘297元/3年
右下⾓,您点⼀下在看图⽚
⼩微⼯资涨1⽑
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论