.Net中Task使用来提高代码执行效率
技术不断更新迭代,更高效的执行效率越来越被重视,所以对Task的使用进行了简单使用做了整理与大家分享。
.Net 中有了Task后使多线程编程更简单使用和操作,下面粘上代码进行简单说明:
/// <summary>
/// 主线程执行
/// </summary>
private static void GetVaule()
{
Console.WriteLine("我不是task,我的信息是,线程{0} 运行在线程id为{1}的线程上。是否是线程池中线程?:{2}",
"同步", Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread);//主线程2
} static int TaskMethod(string name)
{
Console.WriteLine("Task {0} 运行在线程id为{1}的线程上。是否是线程池中线程?:{2}",
name, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread);
Thread.Sleep(2000);
Console.WriteLine("睡醒后,的位置" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff") + "");// task线程1
Return 42;
}
/// <summary>
/// 开启新线程执行。
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
static Task<int> CreateTask(string name)
{
return new Task<int>(() => TaskMethod(name));
}
以上方法是为实例准备的方法调用 主方法调用
Task<int> task = CreateTask("Task 3");
Console.WriteLine(task.Status);
task.Start();
GetVaule();
Console.WriteLine("主线和Id:" + Thread.CurrentThread.ManagedThreadId + ",IsCurrentThreadPool:" + Thread.CurrentThread.IsThreadPoolThread + ""); //主线程1
Console.WriteLine("我的位置1_"+DateTime.Now+"");
Console.WriteLine("Result is1: {0}", task.Result); // part_001
Console.WriteLine("我的位置");
while (!task.IsCompleted)
{
Console.WriteLine(task.Status);
Thread.Sleep(TimeSpan.FromSeconds(0.5));
}
Console.WriteLine(task.Status);
//int result = task.Result; // part_002
//Console.WriteLine("Result is: {0}", result);
Console.ReadKey();
执行后大家可以发现//主线程1和GetVaule中//主线程2 输出的线程 Id 是相同的 与TaskMethod 中// task线程1 输出信息是不同的 说明确实是开启了多线程在执行
下面着重说一下其使用优点 task.Start() 后调用的CreateTask 会新开线程执行,如果不执行 part_001 (Console.WriteLine("Result is1: {0}", task.Result);)主线和不会受阻而执行主代码块下面的代码,子方法CreateTask 也在执行,如果执行part_001 则主线程会等待 CreateTask
执行完再执行后续代码,Task很好的会我们做了等待和不等待的控制让用起来更加方便,以上整理如有不合理解释 望提出一起讨论亲爱的小伙伴们。
.Net中Task使用来提高代码执行效率的更多相关文章
- 提高python执行效率的方法
python上手很容易,但是在使用过程中,怎么才能使效率变高呢? 下面说一下提高python执行效率的方法,这里只是说一点,python在引入模块过程中提高效率的方法. 例如: 1.我们要使用os模块 ...
- 用 console.time()和 console.timeEnd() 测试你的 javascript 代码执行效率
无意中学习到了一种测试 javascript 代码执行效率的一种方法,就记下来便于以后使用,用到了console对象中的 time 和 timeEnd 方法 . console.time('m ...
- .NET代码执行效率优化
NET性能优化方面的总结 从2004年底开始接触C#到现在也有2年多的时间了,因为有C++方面的基础,对于C#,我习惯于与C++对比.现在总结一些.NET方面的性能优化方面的经验,算是对这两年多的.N ...
- 五十个小技巧提高PHP执行效率
在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centos+nginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点 ...
- 提高SQL执行效率的16种方法
项目中优化sql语句执行效率的方法:1)尽量选择较小的列2)将where中用的比较频繁的字段建立索引3)select子句中避免使用'*'4)避免在索引列上使用计算.not in 和<> ...
- 五十个小技巧提高PHP执行效率(一)
在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centos+nginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点 ...
- 《跟我学IDEA》四、配置模板(提高代码编写效率)
上一篇博文,我们学习了idea的一些实用配置,相信大家也对idea这个开发工具有了一个大概的了解.今天我们来学习模板的配置,idea提供很多模板从而提高编写代码的效率,比如说一些经常用的代码及生成文件 ...
- 检测你的php代码执行效率
在写程序的时候,经常会为是改用empty()还是isset好,或是用单引号还是双引号来显示连接字符串而发出疑问,现在好了.我们其实可以通过程序很科学的得出精确的答案.知道我们的程序到底怎样写效率会更好 ...
- 压缩JS,提高代码执行速度
压缩JS java -jar yuicompressor-2.4.jar --type js xxx.js -o xxx.js --charset utf-8 压缩CSS java -jar yuic ...
随机推荐
- Java中的集合和线程安全
通过Java指南我们知道Java集合框架(Collection Framework)如何为并发服务,我们应该如何在单线程和多线程中使用集合(Collection). 话题有点高端,我们不是很好理解.所 ...
- 路过--<全世界谁倾听你>
这首歌大概就是说男生和女生分手了男生一直忘不了女生给他带来的感觉(那种只有那个女生才能给男生带来的喜欢)就算黄昏 还是清晨 男生是男生的清晨 女生是女生的黄昏两个人没有交集了就算雨和歌都停了 风还是会 ...
- Spring Boot,Spring Data JPA多数据源支持配置
1 配置文件 wisely.primary.datasource.driverClassName=oracle.jdbc.OracleDriver wisely.primary.datasource. ...
- adb 提示adb server version(31) doesn't match this client(40) 解决办法
有时候我们用adb工具去连接安卓设备,或者模拟器的时候,会提示adb server version(31) doesn't match this client(40)这样的提示.如图 提示的字面意思就 ...
- teb-安装
源码:https://github.com/rst-tu-dortmund/teb_local_planner.git 以husky为例子: 1.在gazebo里面配置好机器人底盘的环境 roslau ...
- KiCAD的一些快捷操作(类比于AD)
一.原理图快捷操作 二.PCB快捷操作 Q: 在布线过程中,用来编辑线宽,和AD中布线时“Tab”的作用相似 W: 选择设定好的线宽,线宽减小 Shift+W: 选择设定好的线宽,线宽变大 /: 改变 ...
- Git中crlf自动转换的坑
新上手一个项目,克隆了代码下来搭环境,一路坑.其中一个sh脚本执行不了,报IOException,java日志除了"找不到文件或文件夹"之外看不出任何信息,手动运行脚本才发现是脚本 ...
- koa-artTemplate 的使用
1.父页面 <html> <head> <meta charset="UTF-8"> <title>我的音乐</title&g ...
- 【JZOJ1914】【BZOJ2125】最短路
description 给一个N个点M条边的连通无向图,满足每条边最多属于一个环,有Q组询问,每次询问两点之间的最短路径. analysis 建出圆方树后,可以知道仙人掌上每一个方点连着的边双其实就是 ...
- Oracle - 单表查询相关
-- 单表查询 -- 查询表的所有数据, *代表所有 -- select * from [表名]; -- 查询表中指定字段的值 -- select [字段1], [字段2] ... from [表名] ...