C#多线程的Join()方法
作者:農碼一生 时间:2022-05-08 23:56:13
一、简介
Join方法主要是用来阻塞调用线程,直到某个线程终止或经过了指定时间为止。官方的解释比较乏味,通俗的说就是创建一个子线程,给它加了这个方法,其它线程就会暂停执行,直到这个线程执行完为止才去执行(包括主线程)。
二、代码
class Program
{
static void Main(string[] args)
{
Thread threadA = new Thread(ThreadMethod);
threadA.Name = "線程A";
Thread threadB = new Thread(ThreadMethod);
threadB.Name = "線程B";
threadA.Start();
//threadA.Join();
threadB.Start();
//threadB.Join();
for (int i = 1; i <=3; i++)
{
Console.WriteLine("我是:主線程,我循環{1}次", Thread.CurrentThread.Name, i);
Thread.Sleep(300); //休眠300毫秒
}
Console.ReadKey();
}
public static void ThreadMethod(object parameter)
{
for (int i = 1; i <=3; i++)
{
Console.WriteLine("我是:{0},我循環{1}次", Thread.CurrentThread.Name, i);
Thread.Sleep(300); //休眠300毫秒
}
}
}
三、运行结果
因为线程之间的执行是随机的,所有执行结果和我们想象的一样,杂乱无章!但是说明他们是同时执行的。
现在我们把代码中的 ThreadA.join()和ThreadB.join()方法注释取消,首先程序中有三个线程,ThreadA、ThreadB和主线程,首先主线程先阻塞,然后线程ThreadB阻塞,ThreadA先执行,执行完毕以后ThreadB接着执行,最后才是主线程执行。
来源:https://www.cnblogs.com/wml-it/p/14821327.html
标签:C#,多线程,Join
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
RocketMQ消息生产者是如何选择Broker示例详解
2023-11-10 21:45:49
java版微信公众平台消息接口应用示例
2022-10-04 10:22:58
Mybatis中注解@MapKey的使用详解
2023-11-24 21:43:35
SpringBoot实现Thymeleaf验证码生成
2021-11-25 08:06:38
![](https://img.aspxhome.com/file/2023/0/84170_0s.png)
Java并发编程之Fork/Join框架的理解
2023-09-30 14:14:01
![](https://img.aspxhome.com/file/2023/9/75509_0s.png)
C#逐行读取文件的方法
2023-05-16 23:53:02
Java中Request请求转发详解
2021-05-25 20:53:42
![](https://img.aspxhome.com/file/2023/8/61538_0s.png)
采用C#实现软件自动更新的方法
2021-12-30 19:13:38
Spring中bean集合注入的方法详解
2022-08-26 07:37:41
![](https://img.aspxhome.com/file/2023/6/77146_0s.png)
Mybatis 如何传入字符串参数,分割并遍历
2021-10-08 01:14:45
Java 函数式编程梳理
2023-01-17 04:16:34
![](https://img.aspxhome.com/file/2023/7/66657_0s.png)
如何实现Spring Event(异步事件)
2023-08-23 05:06:47
java Disruptor构建高性能内存队列使用详解
2022-02-03 00:41:14
![](https://img.aspxhome.com/file/2023/7/61247_0s.png)
Java面向对象基础知识之抽象类和接口
2023-02-10 03:02:58
FasfDFS整合Java实现文件上传下载功能实例详解
2022-05-27 02:30:46
![](https://img.aspxhome.com/file/2023/8/70268_0s.png)
Java Web Fragment在项目中使用方法详解
2022-04-11 14:17:38
![](https://img.aspxhome.com/file/2023/5/64775_0s.png)
Flutter 如何正确显示SnackBar
2023-06-23 13:00:40
Java设计模式之备忘录模式(Memento模式)介绍
2023-08-23 14:26:42
![](https://img.aspxhome.com/file/2023/8/58438_0s.png)
详解java构建者模式Builder
2021-11-16 18:49:32
Unity3D更改默认的脚本编辑器
2021-06-05 14:58:53
![](https://img.aspxhome.com/file/2023/5/68625_0s.png)