线程不打印顺序

本文关键字:顺序 打印 线程 | 更新日期: 2023-09-27 18:33:24

此代码不会按预期按顺序打印数字,如下所示:

012345678910

怎么了?

    static void Main()
    {
        for (int i = 0; i < 10; i++)
        {
            int temp = i;    
            new Thread(() => Console.Write(temp)).Start();
        }
    }  

线程不打印顺序

你引用 http://www.albahari.com/threading/#_Introduction。

我假设您正在谈论"Lambda 表达式和捕获的变量"部分,作者在其中展示了"捕获的变量"的问题,并展示了如何使用临时变量避免该问题。

但请注意,作者并没有声称这会导致数字 0 - 9 按顺序显示。他声称(尽管他没有显示它)是 10 个线程中的每一个都将显示一个数字 0 - 9。但可能不按顺序。

这是因为线程是不可预测的,并且是随操作系统的心血来潮调度的。