static class Program
{
static Thread t1;
static Thread t2; static void Main()
{
t1 = new Thread(Method1);
t2 = new Thread(Method2); t1.Start();
t2.Start(); Console.ReadLine();
} public static void Method1()
{
for (int i = 1; i <= 25; i++)
{
if (i == 16)
{
Thread.Sleep(1000);
}
Console.WriteLine(i);
}
} public static void Method2()
{
for (int i = 26; i <= 75; i++)
{
if (i == 50)
{
Thread.Sleep(1000);
}
Console.WriteLine(i);
}
}
}
怎么我这段代码执行的结果总是一个顺序,没有一点变化。优先级相同的线程调用顺序是由什么决定的呢?请高手指点一下。
{
static Thread t1;
static Thread t2; static void Main()
{
t1 = new Thread(Method1);
t2 = new Thread(Method2); t1.Start();
t2.Start(); Console.ReadLine();
} public static void Method1()
{
for (int i = 1; i <= 25; i++)
{
if (i == 16)
{
Thread.Sleep(1000);
}
Console.WriteLine(i);
}
} public static void Method2()
{
for (int i = 26; i <= 75; i++)
{
if (i == 50)
{
Thread.Sleep(1000);
}
Console.WriteLine(i);
}
}
}
怎么我这段代码执行的结果总是一个顺序,没有一点变化。优先级相同的线程调用顺序是由什么决定的呢?请高手指点一下。
不可能同时有两个线程并行运行....
优先级相同的话....如果线程能在分配的一个最小单位cpu时间内执行完毕
那么这些线程的执行顺序是固定的....
因为根据单向队列的先进先出原则来执行的...执行完之后会立即压入到单向队列的尾部