原文地址:http://blog.csdn.net/a1801882392/article/details/53690061
sleep():使當(dāng)前線程進(jìn)入停滯狀態(tài),也就是不可執(zhí)行的狀態(tài)擂啥,所以執(zhí)行sleep()的線程在指定時(shí)間內(nèi)是無(wú)法執(zhí)行的山宾。
yield():使當(dāng)前線程從執(zhí)行狀態(tài)重新回到可執(zhí)行狀態(tài),所以yield()的線程有可能進(jìn)入到可執(zhí)行狀態(tài)后又馬上被執(zhí)行。
sleep()方法使當(dāng)前運(yùn)行中的線程睡眠一段時(shí)間達(dá)到筝野,將線程的執(zhí)行權(quán)讓給其它的線程,這段時(shí)間的長(zhǎng)短是可以設(shè)置的馋记。
yield()方法使當(dāng)前線程讓出CPU執(zhí)行權(quán)号坡,但讓出的時(shí)間是不可設(shè)置的。yield()方法對(duì)應(yīng)了如下操作:先檢測(cè)當(dāng)前是否有相同的優(yōu)先級(jí)的線程處于可運(yùn)行狀態(tài)梯醒,如果有則把執(zhí)行權(quán)讓給當(dāng)前線程宽堆,如果沒(méi)有就繼續(xù)執(zhí)行原來(lái)的線程。也就是說(shuō)yield()遇到比自己小的就繼續(xù)霸占執(zhí)行權(quán)茸习,如果遇到比自己大的或者同等級(jí)的畜隶,就把執(zhí)行權(quán)讓出來(lái)。
另外号胚,sleep()方法允許較低優(yōu)先級(jí)的線程獲得執(zhí)行權(quán)籽慢。而yield()方法執(zhí)行時(shí),當(dāng)前線程仍處于可運(yùn)行狀態(tài),所以不可能讓較低優(yōu)先級(jí)的線程獲得執(zhí)行權(quán)猫胁。如果較高優(yōu)先級(jí)的線程沒(méi)有調(diào)用sleep方法箱亿,又沒(méi)收到I\O阻塞狀態(tài),那么較低優(yōu)先級(jí)只能等待高的優(yōu)先級(jí)的線程結(jié)束后弃秆,才可以獲得執(zhí)行權(quán)届惋。