與線程休眠類似,線程的優先順序無法保障線程的執行次序。只不過,優先順序高的線程擷取CPU資源的機率較大,優先順序低的並非沒機會執行。線程的優先順序用1-10之間的整數表示,數值越大優先順序越高,預設的優先順序為5。在一個線程中開啟另外一個新線程,則新開線程稱為該線程的子線程,子線程初始優先順序與父線程相同。
如下的執行個體sss.java:
public class sss
{
public static void main(String[] args)
{
Thread t1 = new MyThread1();
Thread t2 = new Thread(new MyRunnable());
t1.setPriority(10);
t2.setPriority(1);
t2.start();
t1.start();
}
}
class MyThread1 extends Thread
{
public void run()
{
for(int i=0;i<10;i++)
{
System.out.println("線程1第"+i+"次執行!");
try
{
Thread.sleep(100);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
class MyRunnable implements Runnable
{
public void run()
{
for(int i=0;i<10;i++)
{
System.out.println("線程2第"+i+"次執行!");
try
{
Thread.sleep(100);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
執行結果是:
線程1第0次執行!
線程2第0次執行!
線程2第1次執行!
線程1第1次執行!
線程2第2次執行!
線程1第2次執行!
線程1第3次執行!
線程2第3次執行!
線程2第4次執行!
線程1第4次執行!
線程1第5次執行!
線程2第5次執行!
線程1第6次執行!
線程2第6次執行!
線程1第7次執行!
線程2第7次執行!
線程1第8次執行!
線程2第8次執行!
線程1第9次執行!
線程2第9次執行!
看出執行順序跟優先順序並不完全一致!
參考原文:http://lavasoft.blog.51cto.com/62575/221801