我写了一个简单的多线程片段,让我自己习惯了这个概念。C#多线程行为
public void testThread(int arg1, ConsoleColor color)
{
for (int i = 0; i < 1000; i++)
{
Console.ForegroundColor = color;
Console.WriteLine("Thread " + color.ToString() + " : " + i);
Console.ResetColor();
Thread.Sleep(arg1);
}
}
Thread t1 = new Thread(() => program.testThread(1000, ConsoleColor.Blue));
Thread t2 = new Thread(() => program.testThread(1000, ConsoleColor.Red));
t1.Start();
t2.Start();
t1.Join();
t2.Join();
我在输出控制台窗口中看到的是
我只是不明白为什么有时螺纹饰以红色本身可能会变成白色或浅灰色(任何)。你能帮助启发这个想法吗?
在此先感谢。
这个实现的唯一缺点是,如果创建了类的2个实例,它们将不会相互锁定。由于控制台是静态的,因此使用静态对象锁定可能会更好。 –
@BobVale:好点,改变它。 – Heinzi