前几天在Eclipse下写了个测试线程优先级的程序,可是怎么执行都不是按我设定的优先级来执行的,而是按start()的先后顺序来执行的,就有些纳闷,今天在Jcreater下试过就是不一样的结果了,是按照优先级来执行的。程序如下:
class MyThreads extends Thread
{
MyThreads(String name)
{
super(name);
}
public void run()
{
try
{
Thread.sleep(2);
}
catch(Exception e)
{
System.out.println(e.toString());
}
System.out.println("Thread:"+getName()+" Priority:"+getPriority());
}
}
public class testThreads
{
public static void main(String[] args)
{
Thread t1=new MyThreads("A");
Thread t2=new MyThreads("B");
Thread t3=new MyThreads("C");
t1.setPriority(1);
t2.setPriority(5);
t3.setPriority(9);
t1.start();
t2.start();
t3.start();
}
}
这个程序在Eclipse下的结果是:
Thread:A Priority:1
Thread:B Priority:5
Thread:C Priority:9
并且少数情况下会出现A,C,B的情况.
而在Jcreator下的结果是:
Thread:C Priority:9
Thread:B Priority:5
Thread:A Priority:1
很明显不一样,我把t2的priority改为2时在Jcreator下执行时,有时会是C,A,B的顺序,我想可能是二者优先级太近的原因吧,不过比起来Eclipse就强多了。
看来不同的编译器执行的结果还是不一样的,并且各编译器对线程优先级的敏感程序也不同,我开始以为都是用SUN的JDK,结果应该一样的,没想到我想错了^_^
阅读(1101) | 评论(0) | 转发(0) |