读书人

线程启动顺序的有关问题

发布时间: 2012-01-16 23:36:51 作者: rapoo

线程启动顺序的问题
我我初学 写了个线程测试的程序如下:
using System;
using System.Threading;

namespace ConsoleApplication1
{
class ThreadTest
{
private char theChar;
private int theInterval;
public ThreadTest(char c,int i)
{
theChar = c;
theInterval = i;
}

public void Show()
{

Console.WriteLine(theChar+ "start! ");
for(int i = 0;i <5;i++)
{

Console.WriteLine(theChar+ ": "+i+ "---------------- ");
if(theInterval > 0)
Thread.Sleep(theInterval);
}
Console.WriteLine(theChar + "end! ");
}
}


/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
ThreadTest tc1 = new ThreadTest( 'A ',20);
ThreadTest tc2 = new ThreadTest( 'B ',10);
ThreadTest tc3 = new ThreadTest( 'C ',100);

Thread t1 = new Thread(new ThreadStart(tc1.Show));
Thread t2 = new Thread(new ThreadStart(tc2.Show));
Thread t3 = new Thread(new ThreadStart(tc3.Show));

t1.Start();
t2.Start();
t3.Start();
}
}
}

我想问下 按理说我先启动A线程结果因该是:
Astart!
A:0----------------
Bstart!
B:0----------------
Cstart!
C:0----------------
B:1----------------
A:1----------------
......

但是多执行几次后出现:
Cstart!
C:0----------------
Bstart!
B:0----------------
Astart!
A:0----------------
B:1----------------
A:1----------------
.......
C先启动了

这个线程启动的顺序是怎么回事啊?


[解决办法]
线程调度的顺序是不可预料的,因此出现什么样的顺序都是可能的

读书人网 >C#

热点推荐