线程问题-主程序线程为什么不执行
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父线程关闭后子线程不关闭问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
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
springboot schedule 解决定时任务不执行的问题
主要介绍了springboot schedule 解决定时任务不执行的问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下


