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