Thread.Join 和 Task.Wait 方法,多线程例子
public static void TaskThreadTest() { Stopwatch watch = new Stopwatch(); watch.Start(); Thread thread = new Thread(new ThreadStart(ThreadFunction)); Console.WriteLine($"Thread 开始"); thread.Start(); //thread.Join(); watch.Stop(); Console.WriteLine($"Thread 耗时:{watch.ElapsedMilliseconds}"); Stopwatch watch2 = new Stopwatch(); watch2.Start(); Console.WriteLine($"Run 开始"); var task = Task.Run(() => { for (int i = 0; i < 5; i++) { Thread.Sleep(5); Console.WriteLine($"{i}: Run"); } }); //task.Wait(); watch2.Stop(); Console.WriteLine($"Run 耗时:{watch2.ElapsedMilliseconds}"); Console.WriteLine($"All is End!"); Console.Read(); } public static void ThreadFunction() { for (int i = 0; i < 5; i++) { Thread.Sleep(5); Console.WriteLine($"{i}: Thread"); } }
观察运行结果,可以发现 不管是Thread还是Task,都是采用异步处理的方式在子线程里跑的
接下来我们把 注释的两句话放开(Thread.Join 和 Task.Wait )
再运行,观察结果,可以看到,Thread的线程已经合并到了主线程中,阻塞了主线程,Task异步的任务也变成了阻塞型。
两个方法用起来还是很简单的,这样就很清楚了。
Thread.Join 和 Task.Wait 方法,多线程例子
public static void TaskThreadTest() { Stopwatch watch = new Stopwatch(); watch.Start(); Th...
点击下载文档
本文2024-09-16 18:39:06发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-23517.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章