这两个方法 可以说是类似的功能,都是对当前任务进行等待阻塞,执行完毕后再进行后续处理

talk is cheap, show you code,下面一个是异步执行,一个是加了阻塞,可以对比不同执行结果

 1         public static void TaskThreadTest()
 2         {
 3             Stopwatch watch = new Stopwatch();
 4             watch.Start();
 5             Thread thread = new Thread(new ThreadStart(ThreadFunction));
 6             Console.WriteLine($"Thread 开始");
 7             thread.Start();
 8             //thread.Join();
 9             watch.Stop();
10             Console.WriteLine($"Thread 耗时:{watch.ElapsedMilliseconds}");
11
12             Stopwatch watch2 = new Stopwatch();
13             watch2.Start();
14             Console.WriteLine($"Run 开始");
15             var task = Task.Run(() =>
16             {
17                 for (int i = 0; i < 5; i++)
18                 {
19                     Thread.Sleep(5);
20                     Console.WriteLine($"{i}: Run");
21                 }
22             });
23             //task.Wait();
24             watch2.Stop();
25             Console.WriteLine($"Run 耗时:{watch2.ElapsedMilliseconds}");
26             Console.WriteLine($"All is End!");
27             Console.Read();
28         }
29
30         public static void ThreadFunction()
31         {
32             for (int i = 0; i < 5; i++)
33             {
34                 Thread.Sleep(5);
35                 Console.WriteLine($"{i}: Thread");
36             }
37         }

View Code

观察运行结果,可以发现 不管是Thread还是Task,都是采用异步处理的方式在子线程里跑的

接下来我们把 注释的两句话放开(Thread.Join 和 Task.Wait )

再运行,观察结果,可以看到,Thread的线程已经合并到了主线程中,阻塞了主线程,Task异步的任务也变成了阻塞型。

两个方法用起来还是很简单的,这样就很清楚了。

转载于:https://www.cnblogs.com/wolfworker/p/7611585.html

Thread.Join 和 Task.Wait 方法相关推荐

  1. Thread.Join()方法的理解

    关于C#中Thread.Join()的一点理解 今天是第一次在C#中接触Thread,自己研究了一下其中Thread.Join()这个方法,下面谈谈自己的理解. Thread.Join()在MSDN中 ...

  2. java thread join()_Java中Thread.join()的使用方法

    概要 本文分三个部分对thread.join()进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() 的示 ...

  3. java并发编程之thread.join()方法详解

    thread.join()方法的作用:保证线程的执行结果的可见性.原理是通过阻塞主线程实现的. 代码Demo如下: public class ThreadJoinDemo {public static ...

  4. 高并发编程-Thread#join方法的使用及使用场景分析

    文章目录 含义 方法及示例 void join() void join(long millis) join(long millis, int nanos) 使用场景分析 含义 翻看下源码的注释: Wa ...

  5. 并发编程——线程——Thread对象的属性和方法

    Thread实例对象的方法 # isAlive(): 返回线程是否活动的.# getName(): 返回线程名.# setName(): 设置线程名. threading模块提供的一些方法: # th ...

  6. Thread系列之Thread.Join()

    Thread.Join()方法,顾名思义,在一个线程中加入一些东西. MSDN上解释其作用为:阻塞 "调用线程" 直到某个线程结束. 这个翻译过来的解释有点晦涩.举个例子如下: s ...

  7. thread.Join(); 让主线程等待自己完成

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. java join 异常_Java:守护进程:thread.join()没有完成,当在一个线程中抛出异常时...

    我写了一个Java守护进程(一个实现守护进程和Runnable的类),现在我遇到了以下问题: 在init()中,我创建了一个新线程 . Thread thread = new Thread(this) ...

  9. Thread.join(), CountDownLatch、CyclicBarrier和 Semaphore区别,联系及应用

    在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法, 由于 ...

  10. python的多线程threading_Python中多线程thread与threading的实现方法,pythonthreading

    Python中多线程thread与threading的实现方法,pythonthreading 学过Python的人应该都知道,Python是支持多线程的,并且是native的线程.本文主要是通过th ...

最新文章

  1. struts2 用form取值时出现的错误
  2. fastreport.net 交叉表居中显示_浅析Sql中内连接、外连接、全连接、交叉连接的区别...
  3. 【Java Web开发指南】解析Spring中Ioc和DI(入门Demo)
  4. 进一步考察与UI相关的安全漏洞-下
  5. sklearn综合示例9:分类问题的onehot与预测阈值调整
  6. 信息系统项目管理01——信息化和信息系统
  7. 安装Docker环境并下载TensorFlow镜像
  8. Windows 有哪些值得推荐的必装软件?
  9. a6账套管理显示无法连接服务器,航天A6基础版简单建账实施流程
  10. html写一个轮播图响应式布局,响应式banner图片轮播布局代码
  11. 如何读懂和利用你的微生物多样性测序结果?
  12. 网页制作 - 问卷网的首页
  13. 数据分析入门 | kaggle泰坦尼克任务
  14. 批量将MP3或者m4a转为wav格式
  15. broker-list与bootstrap-server辨析
  16. 龙与地下城用户名_多用户地下城如何教我编程
  17. v-for生成多个div并给div中的组件绑定值
  18. elf文件反编译C语言,图文并茂,讲透C语言静态链接,ELF文件篇
  19. 实验五、异常处理与I/O操作
  20. linux snmptrap的发送与接收。

热门文章

  1. 二十五、JAVA多线程(五、线程生命周期)
  2. 四、Linux常用命令——文件搜索命令
  3. html中label中的for属性
  4. 编程坑太多,Map 集合怎么也有这么多坑?一不小心又踩了好几个!
  5. 拉取 google.golang.org/grpc 报错
  6. [Algorithm] Fibonacci Sequence - Anatomy of recursion and space complexity analysis
  7. C# 中类的成员有哪些?
  8. oracle 常用系统表
  9. QT正则表达式---针对IP地址
  10. spring异常+自定义以及使用