为什么我设置的优先级不起作用?
public class ThreadText extends Thread
{
private int k;
public ThreadText(String name, int k)
{
super(name);
this.k = k;
}
public void run()
{
int i = k;
System.out.print("\n"+this.getName()+":");
while(i<50)
{
System.out.print(" "+i);
i+=2;
}
System.out.println();
}
public static void main(String argv[])
{
ThreadText odd = new ThreadText("奇数线程",1);
ThreadText even = new ThreadText("偶数线程",0);
odd.setPriority(10);
even.setPriority(1);
odd.start();
even.start();
System.out.println(""+ThreadText.activeCount());
}
}

解决方案 »

  1.   

    不起作用是不是我编译器问题?我用editplus跟用eclipse,运行多几次结果都不一样,跟没用setPriority的情况一样
      

  2.   

    设置优先级别不等于运行完一个线程才到另外一个,而是分配给级别高的线程更多的cpu时间。
      

  3.   

    优先级这东西本来就是由操作系统决定的,java本身不能决定
      

  4.   

    输出贴出来看看呢
    优先级不代表 一个优先级高的线程执行完才把CPU交给优先级低的线程. 只是相对获得的CPU时间多一点而已.
    注意重点在"相对"
      

  5.   


    在java中线程是抢占式的,不可控的。不能明确的制定线程执行的顺序。哪怕指定优先级也不行。在Java中优先级高的线程,只是优先执行的概率大而已。并不是一定比优先级低的线程先执行。