您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中的小編將會(huì)給大家?guī)?lái)有關(guān)java中sleep的使用方法,以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
sleep()使當(dāng)前線程進(jìn)入停滯狀態(tài)(阻塞當(dāng)前線程),讓出CPU的使用、目的是不讓當(dāng)前線程獨(dú)自霸占該進(jìn)程所獲的CPU資源,以留一定時(shí)間給其他線程執(zhí)行的機(jī)會(huì)。Thread.sleep(long millis)
和Thread.sleep(long millis, int nanos)
靜態(tài)方法強(qiáng)制當(dāng)前正在執(zhí)行的線程休眠(暫停執(zhí)行),以“減慢線程”。
當(dāng)線程睡眠時(shí),它睡在某個(gè)地方,在蘇醒之前不會(huì)返回到可運(yùn)行狀態(tài)。
當(dāng)睡眠時(shí)間到期,則返回到可運(yùn)行狀態(tài)。
1、線程睡眠的原因:線程執(zhí)行太快,或者需要強(qiáng)制進(jìn)入下一輪,因?yàn)镴ava規(guī)范不保證合理的輪換。
2、睡眠的實(shí)現(xiàn):調(diào)用靜態(tài)方法。
try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); }
3、睡眠的位置:為了讓其他線程有機(jī)會(huì)執(zhí)行,可以將Thread.sleep()
的調(diào)用放線程run()
之內(nèi)。這樣才能保證該線程執(zhí)行過(guò)程中會(huì)睡眠。
public class TestSleep { public static void main(String[] args) { MyThread2 t1 = new MyThread2("TestSleep"); t1.start(); for(int i=0 ; i <10; i++) System.out.println("I am Main Thread"); } } class MyThread2 extends Thread { MyThread2(String s) { super(s); } public void run() { for(int i = 1; i <= 10; i++) { System.out.println("I am "+getName()); try { sleep(1000); //暫停,每一秒輸出一次 }catch (InterruptedException e) { return; } } } }
注意:
1、線程睡眠到期自動(dòng)蘇醒,并返回到可運(yùn)行狀態(tài),不是運(yùn)行狀態(tài)。sleep()中指定的時(shí)間是線程不會(huì)運(yùn)行的最短時(shí)間。因此,sleep()方法不能保證該線程睡眠到期后就開始執(zhí)行。
2、sleep()是靜態(tài)方法,只能控制當(dāng)前正在運(yùn)行的線程。
3、線程睡眠是幫助所有線程獲得運(yùn)行機(jī)會(huì)的最好方法。
實(shí)例:一個(gè)計(jì)數(shù)器,計(jì)數(shù)到100,在每個(gè)數(shù)字之間暫停1秒,每隔10個(gè)數(shù)字輸出一個(gè)字符串
public class MyThread extends Thread { public void run() { for (int i = 0; i < 100; i++) { if ((i) % 10 == 0) { System.out.println("-------" + i); } System.out.print(i); try { Thread.sleep(1000); System.out.print(" 線程睡眠1秒!\n"); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) { new MyThread().start(); } }
上述就是小編為大家分享的java中sleep的使用方法了,如果您也有類似的疑惑,不妨礙參照上述分析進(jìn)行理解。如果想了解更多相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。