Java 線程優(yōu)先級詳解及實例
操作系統(tǒng)基本采用時分的調(diào)度運行線程,操作系統(tǒng)會分出一個個時間片,線程會被分配到若干個時間片,當(dāng)線程的時間片用完了就會發(fā)生線程調(diào)度,并且等待著下次調(diào)度,線程被分配到的時間片多少也就決定了線程使用處理器資源的多少,而線程優(yōu)先級就是決定線程能夠分配多少處理器資源的線程屬性。
在Java多線程中,通過一個整形變量priority來控制優(yōu)先級,優(yōu)先級的范圍從1-10.默認(rèn)是5,優(yōu)先級越高越好。
public class Priority { public static void main(String[] args) { Thread t1 = new Mythread(); t1.setName("線程1"); t1.setPriority(1); //設(shè)置優(yōu)先級 Thread t2 = new Mythread(); t2.setName("線程2"); t2.setPriority(10); //設(shè)置優(yōu)先級 t1.start(); t2.start(); } } class Mythread extends Thread{ @Override public void run() { for(int i=0;i<10;i++){ System.out.println(getName()+"執(zhí)行"+i+"次"); } } } 執(zhí)行結(jié)果:
線程2執(zhí)行0次 線程2執(zhí)行1次 線程2執(zhí)行2次 線程2執(zhí)行3次 線程2執(zhí)行4次 線程2執(zhí)行5次 線程2執(zhí)行6次 線程2執(zhí)行7次 線程2執(zhí)行8次 線程2執(zhí)行9次 線程1執(zhí)行0次 線程1執(zhí)行1次 線程1執(zhí)行2次 線程1執(zhí)行3次 線程1執(zhí)行4次 線程1執(zhí)行5次 線程1執(zhí)行6次 線程1執(zhí)行7次 線程1執(zhí)行8次 線程1執(zhí)行9次
我們可以看到系統(tǒng)會優(yōu)先執(zhí)行線程1。但是也并不是每次都會優(yōu)先執(zhí)行線程1的,特別是兩個線程優(yōu)先級區(qū)別不是很大的時候,線程優(yōu)先級基本上作用不大。線程優(yōu)先級不能作為程序正確性的依賴,因為操作系統(tǒng)可以完全不用理會java線程對于優(yōu)先級的決定。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選