public class ThreadPriority {
/**
* Method main
*
*
* @param args
*
*/
public static void main(String[] args) {
// TODO: Add your code here
new ThreadTest().start();
new ThreadTest().start();
new ThreadTest().start();
}
}class ThreadTest extends Thread
{
static int prio=3;
public ThreadTest()
{
prio++;
System.out.println(prio);
setPriority(prio);
}
public void run()
{
System.out.println(Thread.currentThread().getName()+" priority = "+getPriority() );
}
}程序本应该输出得是6。5。4,可是我在另一台机器上居然输出5。6。4,为什么,请指教!!
当jvm取决于主机平台的线程机制时,线程的调度完全受线程机制的支配。
jvm将线程优先级映射为主机平台的优先级等级(可能多一些或者少一些)。
如果主机的优先级等级少一些的话,那么必然有一些jvm的优先级映射为相同的平台优先级等级。
方法start();
只是告诉系统说:“现在线程对象g已经就绪了,你随时可以调度它。”,而并不是告诉系统:“你他妈马上把我停下来,把别的线程都停下来,调度g运行,听见没有!”^_^。