Chinaunix首页 | 论坛 | 博客
  • 博客访问: 181280
  • 博文数量: 61
  • 博客积分: 2215
  • 博客等级: 大尉
  • 技术积分: 625
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-10 21:20
文章分类
文章存档

2014年(2)

2013年(7)

2012年(4)

2011年(7)

2008年(11)

2007年(11)

2006年(19)

我的朋友

分类: Java

2006-03-28 17:10:55

    前几天在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) |
给主人留下些什么吧!~~