现有一多线程程序:
class PriorityTest
{
public static void main(String args[])
{ Thread First=new MyThread("A");
First.setPriority(Thread.MIN_PRIORITY);
Thread Second=new MyThread("B");
Second.setPriority(Thread.NORM_PRIORITY+1);
Thread Third=new MyThread("C");
Third.setPriority(Thread.MAX_PRIORITY);
First.start();
Third.start();
Second.start();
}}
class MyThread extends Thread
{String message;
MyThread(String message)
{ this.message= message;}
public void run( )
{
for (int i=0;i<2;i++)
System.out.println(message+" "+getPriority());}}
运行结果很是令人费解
在家里的机器上运行总是这样的
C 10
C 10
B 6
B 6
A 1
A 1
可是到了单位运行就是这样的:
C 10
B 6
A 1
C 10
B 6
A 1
更奇怪的是,在运行几次就会出现这样的结果:
A 1
C 10
B 6
A 1
C 10
B 6
不知道是怎么回事,已经设置的优先级怎么会出现这么多样的结果
class PriorityTest
{
public static void main(String args[])
{ Thread First=new MyThread("A");
First.setPriority(Thread.MIN_PRIORITY);
Thread Second=new MyThread("B");
Second.setPriority(Thread.NORM_PRIORITY+1);
Thread Third=new MyThread("C");
Third.setPriority(Thread.MAX_PRIORITY);
First.start();
Third.start();
Second.start();
}}
class MyThread extends Thread
{String message;
MyThread(String message)
{ this.message= message;}
public void run( )
{
for (int i=0;i<2;i++)
System.out.println(message+" "+getPriority());}}
运行结果很是令人费解
在家里的机器上运行总是这样的
C 10
C 10
B 6
B 6
A 1
A 1
可是到了单位运行就是这样的:
C 10
B 6
A 1
C 10
B 6
A 1
更奇怪的是,在运行几次就会出现这样的结果:
A 1
C 10
B 6
A 1
C 10
B 6
不知道是怎么回事,已经设置的优先级怎么会出现这么多样的结果
多个线程不同优先级的时候,并不一定就是优先级高的先运行,只是优先级高的比优先级低的抢到CPU资源的概率要多一些。