您好,登錄后才能下訂單哦!
怎么在java中使用yield?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
Java是一門(mén)面向?qū)ο缶幊陶Z(yǔ)言,可以編寫(xiě)桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序。
1.概念
yield執(zhí)行后線程進(jìn)入就緒狀態(tài)。通知調(diào)度器,主動(dòng)讓出對(duì)cpu的占用,讓別的線程執(zhí)行,但是不一定能夠保證別的同樣優(yōu)先級(jí)的線程能夠執(zhí)行。線程會(huì)從運(yùn)行態(tài)切換到就緒態(tài),但是也有可能馬上從就緒態(tài)又切換到運(yùn)行狀態(tài)。
2.使用注意
(1)yield是一個(gè)靜態(tài)的本地方法(native)
(2)調(diào)用yield后,yield告訴當(dāng)前線程把運(yùn)行機(jī)會(huì)交給線程池中有相同優(yōu)先級(jí)的線程。
(3)yield不能保證,當(dāng)前線程迅速?gòu)倪\(yùn)行狀態(tài)切換到就緒狀態(tài)。
(4)yield只能是將當(dāng)前線程從運(yùn)行狀態(tài)轉(zhuǎn)換到就緒狀態(tài),而不能是等待或者阻塞狀態(tài)。
3.實(shí)例
//yield放棄CPU時(shí)間片 public static void yieldTest(){ //定義一個(gè)線程 Thread thread = new Thread(() -> { System.out.println(Thread.currentThread().getName() + ": 測(cè)試線程開(kāi)始執(zhí)行。。。"); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + ": 測(cè)試線程執(zhí)行結(jié)束了。"); }); thread.start(); System.out.println(Thread.currentThread().getName() + ": 執(zhí)行yield方法"); Thread.yield(); System.out.println(Thread.currentThread().getName() + ": 主線程開(kāi)始執(zhí)行"); }
打印結(jié)果:
main: 執(zhí)行yield方法 main: 主線程開(kāi)始執(zhí)行 Thread-0: 測(cè)試線程開(kāi)始執(zhí)行。。。 Thread-0: 測(cè)試線程執(zhí)行結(jié)束了。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(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)容。