值得注意的是,儘管Java提供了10個優先級,但它與多數操作系統都不能很好地映射.比如Windows 2000有7個優先級,並且不是固定
的,而SUN公司的Solaris操作系統有2的31次方個優先級.如果希望程序能移植到不同的平臺中,應該確保在設置線程的優先級時,只使
用MAX_PRIORITY.NORM_PRIORITY.MIN_PRIORITY這三個優先級.這樣才能保證在不同的操作系統中,對同樣優先級的線程式採用同樣的
調試方式.
一個線程創A建了另一個線程B,則線程B的優先級就和線程A的優先級是一樣的,比如主線程創建了另一個線程,則這個被創建的線程
式的優先級就和主線程的優先級是一樣的.
下面是一個例子:
public class Machine extends Thread{
public void run()
{
for(int a=0;a<3;a++)
{
System.out.println(currentThread().getName()+":"+a);
/*if(a==1 && currentThread().getName().equals("m1"))
throw new RuntimeException("Wrong from Machine");
try
{
sleep(100);
}
catch(InterruptedException e)
{
throw new RuntimeException(e);
}*/
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Machine m=new Machine();
m.setName("m1");
Thread main=Thread.currentThread();
System.out.println("the main thread's priority is:"+main.getPriority());
m.start();
System.out.println("the default priority is:"+m.getPriority());
m.setPriority(MIN_PRIORITY);
System.out.println("the min priority is:"+m.getPriority());
//m.run();
//System.out.println("Is machine alive "+m.isAlive());
//System.out.println("main:end");
}
}