线程的等待方法:join
2023-09-11 14:14:06 时间
其实多线程最复杂的地方在于不同线程间的同步问题,这其中会涉及到先后执行问题、共享变量问题等。这篇文章我们主要来开个头,看一下join方法。
- using System;
- using System.Threading;
- namespace Chapter1.Recipe3
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Starting program...");
- Thread t = new Thread(PrintNumbersWithDelay);
- t.Start();
- t.Join(); // 等待t线程完成后,主线程才继续执行!
- Console.WriteLine("Thread completed");
- }
using System; using System.Threading; namespace Chapter1.Recipe3 { class Program { static void Main(string[] args) { Console.WriteLine("Starting program..."); Thread t = new Thread(PrintNumbersWithDelay); t.Start(); t.Join(); // 等待t线程完成后,主线程才继续执行! Console.WriteLine("Thread completed"); }
- static void PrintNumbersWithDelay()
- {
- Console.WriteLine("Starting...");
- for (int i = 1; i < 10; i++)
- {
- Thread.Sleep(2000);
- Console.WriteLine(i);
- }
- }
- }
- }
static void PrintNumbersWithDelay() { Console.WriteLine("Starting..."); for (int i = 1; i < 10; i++) { Thread.Sleep(2000); Console.WriteLine(i); } } } }
其实join方法的意义很简单,主线程main在t没有执行完毕前都会保持阻塞状态(类似于sleep状态),这样做的好处是保证了线程t在join前一定会执行完毕,确保了main和t线程的先后逻辑关系。
相关文章
- CSS3 动画实现方法大全(*****************************星级文章*************************)
- Java基础_线程的使用及创建线程的三种方法
- C#线程同步的几种方法
- 判断图片的格式的方法
- php递归方法实现无限分类实例
- 线程同步的几种方法
- Python生成随机数组的方法小结
- 请简述一下线程的sleep()方法和yield()方法的区别?
- 线程池中shutdown()和shutdownNow()方法的区别
- 池与线程池 技术点 目录 1. 线程池作用: 提升性能1 2. 使用流程1 3. 线程与线程池的监控 jvisual1 4. 线程常用方法2 5. 线程池相关概念2 5.1. 队列
- 【Android笔记07】Android中常见的属性和方法总结
- Py之pyserial:Python的pyserial库的简介、安装、使用方法之详细攻略
- Java Objects.isNull() 方法及代码示例
- android 多线程开发 正确关闭线程的方法
- WinForm-跨线程更新UI控件常用方法
- 谈谈有什么方法可以快捷实现多场景下的线程安全
- cidaemon.exe进程cpu占用率高及关闭cidaemon.exe进程方法
- 004-GC-对象的生命周期、对象访问、回收方法区
- Microsoft SDK 中Sample案例之Amcap項目 的运行方法(转)
- 并发基础篇(六):线程Thread类的start()方法和run()方法
- 〖Python语法进阶篇③〗- 进程的创建与常用方法