为什么我设置的优先级不起作用?
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());
}
}
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());
}
}
优先级不代表 一个优先级高的线程执行完才把CPU交给优先级低的线程. 只是相对获得的CPU时间多一点而已.
注意重点在"相对"
在java中线程是抢占式的,不可控的。不能明确的制定线程执行的顺序。哪怕指定优先级也不行。在Java中优先级高的线程,只是优先执行的概率大而已。并不是一定比优先级低的线程先执行。