You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#多线程使用Thread.Sleep与Join时控制台最先输出哪些Player

问题解答

执行流程梳理

我们顺着主线程的执行顺序一步步拆解逻辑:

  • 主线程首先依次调用threadE.Start()、threadC.Start()、threadA.Start(),三个线程启动后立刻进入Run方法,执行Thread.Sleep(100),相当于三个线程几乎同时开始休眠100毫秒
  • 紧接着主线程执行threadC.Join(),此时主线程会直接阻塞,必须等待C线程完全执行完毕,才能继续往下执行后续代码
  • 100毫秒休眠结束后,已经启动的E、C、A三个线程都会被操作系统唤醒,各自执行Console.Write(tag + ",")输出自己的标签
    • 这三个线程的输出顺序由操作系统的线程调度策略决定,没有固定先后,任意排列都属于正常情况
    • 此时B、D线程还没有被调用Start(),完全没有启动,不可能先于E/C/A输出
  • 只有等C线程执行完成、threadC.Join()返回后,主线程才会继续往下依次启动B、D线程,因此B、D的输出时间一定晚于E/C/A三个线程。

结论

最先输出的一定是A、C、E三个标签,三者输出顺序不固定,但B、D绝对不会出现在最先的输出序列中。

内容的提问来源于stack exchange,提问作者androidvango

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:45:00