Java中的yield和sleep都是線程調(diào)度方法,但二者有著不同的作用。
public static native void yield();
yield方法是靜態(tài)方法,用于讓當前線程暫停一下,給其他線程機會去執(zhí)行。但并不保證當前線程暫停的時間,也不能強制讓其他線程得到執(zhí)行。
public static void sleep(long millis) throws InterruptedException
sleep方法是Thread類的實例方法,用于使當前線程暫停指定的時間。這個方法會讓線程進入阻塞狀態(tài),在指定時間過去后自動解除阻塞狀態(tài),恢復到就緒狀態(tài)。
區(qū)別在于,yield方法是讓出CPU資源,但并不一定讓出執(zhí)行權限;而sleep方法是讓出CPU和執(zhí)行權限,暫停線程的執(zhí)行。