<分区>
首先,我用线程实现了测试逻辑:
public void ThreadProc()
{
Console.Write("s");
Thread.Sleep(1000);
Console.Write("e");
}
public void TestByThread()
{
for (var i = 0; i < 10; i++)
{
Thread t = new Thread(new ThreadStart(ThreadProc));
t.Start();
}
}
当运行 TestByThread() 时,结果是这样的:
sssssssseeeeeeeeee
但是当涉及到任务时...
public void TestByTask()
{
for (var i = 0; i < 10; i++)
{
Task.Run(() =>
{
Console.Write("s");
Thread.Sleep(1000);
Console.Write("e");
});
}
}
执行TestByTask()时,结果很奇怪:
ssssssseesesseeeeeeee
不仅字符顺序不同,输出速度也不同。
任务和线程有什么区别?