多线程系列(四):Task
目录:
- 为什么要使用任务
- 任务
一、为什么使用任务
线程池已经可以让我们简单地创建线程,并优化了性能。
但是,线程池的缺点在于,我不清楚我的操作什么时候完成,也不能收到返回值,因为委托是没有返回值的。
所以任务就出现了,它可以完成线程池能够完成的任务。
System.Threading.Tasks //命名空间
二、任务
我们使用:
public class Task<TResult> : Task
{
......
public Task(Func<object, TResult> function, object state);
... ...
}
首先我们分析一下,这个构造:
Func<object, TResult> //有一个参数,并且有一个返回值
object state //委托的实参参数
先定义有一个整数参数,还有一个整数返回值的方法:
private static int Count(int start)
{
for (int count = ; count < ; count++)
{
Console.WriteLine("index:{0}", count);
start += count;
}
Console.WriteLine("{0}+{1}", DateTime.Now, start);
return start;
}
然后主线程,开启任务:
public void Run(string args)
{
System.Threading.Tasks.Task<int> task = new System.Threading.Tasks.Task<int>(start=>Count((int)start),);//一个整形参数参数start=100
task.Start();
Console.WriteLine(task.Result);//打印返回值
Console.ReadLine(); }
运行:

如何在一个任务结束时开启另一个人任务呢?可以形成任务链。
task.ContinueWith(task2 => Console.WriteLine("我是任务2"));
多线程系列(四):Task的更多相关文章
- java多线程系列(四)---Lock的使用
Lock的使用 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于<java多线程核心技术>与<java并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我的理 ...
- java多线程系列(四)---ReentrantLock的使用
Lock的使用 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于<java多线程核心技术>与<java并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我的理 ...
- 多线程系列四:AQS-AbstractQueuedSynchronizer
什么是AbstractQueuedSynchronizer?为什么我们要分析它? AQS:抽象队列同步器,原理是:当多个线程去获取锁的时候,如果获取锁失败了,当前线程就会被打包成一个node节点放入 ...
- Java多线程系列四——控制线程执行顺序
假设有线程1/线程2/线程3,线程3必须在线程1/线程2执行完成之后开始执行,有两种方式可实现 Thread类的join方法:使宿主线程阻塞指定时间或者直到寄生线程执行完毕 CountDownLatc ...
- (Java多线程系列四)停止线程
停止线程 停止线程的思路 ①使用退出标志,使线程正常退出,也就是当run()方法结束后线程终止. class Thread01 extends Thread { // volatile关键字解决线程的 ...
- 【Java多线程系列四】控制线程执行顺序
假设有线程1/线程2/线程3,线程3必须在线程1/线程2执行完成之后开始执行,有两种方式可实现 Thread类的join方法:使宿主线程阻塞指定时间或者直到寄生线程执行完毕 CountDownLatc ...
- C# 多线程系列(四)
Parallel类 Parallel类定义了for.foreach和invoke的静态方法.Parallel类使用多个任务,因此使用多个线程来完成这个作业. Parallel.For Parallel ...
- Java多线程系列--“JUC线程池”05之 线程池原理(四)
概要 本章介绍线程池的拒绝策略.内容包括:拒绝策略介绍拒绝策略对比和示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3512947.html 拒绝策略 ...
- Java多线程系列--“JUC线程池”06之 Callable和Future
概要 本章介绍线程池中的Callable和Future.Callable 和 Future 简介示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.co ...
- java多线程系列(七)---Callable、Future和FutureTask
Callable.Future和FutureTask 前言:如有不正确的地方,还望指正. 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量 ...
随机推荐
- PowerDesigner15连接Oracle数据库并导出Oracle的表结构
PowerDesigner连接Oracle数据库,根据建立的数据源进行E-R图生成.详细步骤如下: 1.启动PowerDesigner 2.菜单:File->Reverse Engineer - ...
- JS截取页面,并保存到本地
想截取浏览器上内容,并做成图片保存到本地. 可以使用html2canvas.js进行操作. <!DOCTYPE html> <html lang="en"> ...
- 2、Linux常用功能
防火墙的基本用法 - 启动: systemctl start firewalld - 关闭: systemctl stop firewalld - 查看状态: systemctl status fir ...
- 想不想在mac上玩PSP?我教你呀
OpenEmu for mac是一款针对OS X系统的原生开源游戏模拟器.有了它可以在Mac OS X 系统上玩GB.GBA.NDS.psP.PlayStation.超级任天堂(SNES).红白机(N ...
- js,JQ 图片转换base64 base64转换为file对象,blob对象
//将图片转换为Base64 function getImgToBase64(url,callback){ var canvas = document.createElement('canvas'), ...
- FastStone Capture(FSCapture)
FastStone Capture(FSCapture) 注册码 企业版序列号: name:bluman serial/序列号/注册码:VPISCJULXUFGDDXYAUYF FastStone C ...
- easyui拓展验证结束日期大于等于开始日期
<div style="margin:20px 0px 20px 70px"> <span>有效期起始时间:</span><input i ...
- Little Sub and Mr.Potato's Math Problem-构造
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5864 思路 : 判断小于它的合法的,再看大于它的合法的,特判10000. ...
- codeforces1152 div2
比赛的链接 C gcd(a+k, b+k) == gcd(a+k, b-a) #include <bits/stdc++.h> using namespace std; const int ...
- C# 0xC0000005 捕获
[HandleProcessCorruptedStateExceptions]//捕获c++异常 [SecurityCritical]//捕获c++异常 public void xxx() { try ...