线程问题-主程序线程为什么不执行

xingxingliang xingxingliang 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码和输出结果如下, 问题是
Child #1 joined.
Child #2 joined.
Child #3 joined.
这三个主程序的语句为什么在最后执行? 当其它线程sleep的时候,主程序还不能执行吗?
为什么? 谢谢!

using System;
using System.Threading;

class MyThread
{
public int count;
public Thread thrd;

public MyThread(string name)
{
count = 0;
thrd = new Thread(run);
thrd.Name = name;
thrd.Start();
}

void run()
{
Console.WriteLine(thrd.Name + " starting.");

do
{
Thread.Sleep(1000);
Console.WriteLine("In " + thrd.Name +
", count is " + count);
count++;
} while (count < 5);

Console.WriteLine(thrd.Name + " terminating.");
}
}

class MainClass
{
public static void Main()
{
Console.WriteLine("Main thread starting.");

MyThread mt1 = new MyThread("Child #1");
MyThread mt2 = new MyThread("Child #2");
MyThread mt3 = new MyThread("Child #3");

mt1.thrd.Join();
Console.WriteLine("Child #1 joined.");

mt2.thrd.Join();
Console.WriteLine("Child #2 joined.");

mt3.thrd.Join();
Console.WriteLine("Child #3 joined.");

Console.WriteLine("Main thread ending.");

Console.ReadLine();
}
}



这是输出结果:
Main thread starting.
Child #1 starting.
Child #2 starting.
Child #3 starting.
In Child #2, count is 0
In Child #1, count is 0
In Child #3, count is 0
In Child #2, count is 1
In Child #1, count is 1
In Child #3, count is 1
In Child #2, count is 2
In Child #1, count is 2
In Child #3, count is 2
In Child #2, count is 3
In Child #1, count is 3
In Child #3, count is 3
In Child #2, count is 4
Child #2 terminating.
In Child #1, count is 4
Child #1 terminating.
In Child #3, count is 4
Child #3 terminating.
Child #1 joined.
Child #2 joined.
Child #3 joined.
Main thread ending.
...全文

相关推荐

解决python父线程关闭后子线程不关闭问题

主要介绍了解决python父线程关闭后子线程不关闭问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

weixin_38647039

python join堵塞后不运行主程序

方法对主程序的影响是阻塞其执行,直到被调用的对象执行完成。方法是Python中用于阻塞主程序的重要方法,它可以等待线程或进程执行完成后再继续主程序的执行。方法是Python中用于阻塞主程序的重要方法,可以实现多线程和多进程任务的同步和协调。方法实现线程或进程之间的同步,例如确保某个线程或进程在另一个线程或进程之前执行。方法的原理是通过阻塞主程序的执行,等待被调用对象的执行完成。方法会等待被调用对象(线程或进程)执行完毕后再继续主程序的执行。方法用于阻塞主程序的执行,直到指定的线程或进程完成执行。

鱼弦

多线程与主程序同步执行:Java线程池与Future实践

使用Callable和Future可以让Java中的异步任务执行更加灵活和强大。Callable定义了可以产生结果的任务,而Future则提供了获取这些结果的机制。通过,我们可以轻松地提交Callable任务,并通过Future来管理这些任务的执行和结果获取。记住,在使用Future获取结果时,适当的异常处理是必要的,以确保应用程序的稳定性。通过本章的讲解,我们了解了如何利用Java并发API中的Callable和Future。

芦苇毛

多线程执行完后主程序再执行(包括需要子线程返回结果)

NULL 博文链接:https://lf6627926.iteye.com/blog/1538301

weixin_38669628

springboot schedule 解决定时任务不执行的问题

主要介绍了springboot schedule 解决定时任务不执行的问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

weixin_38722721
评论 5
收藏 已收藏
分享
返回顶部
xingxingliang
C# 111,128 成员 642,536 内容