1. 程式人生 > >Java 多線程 sleep()方法與yield()方法的區別

Java 多線程 sleep()方法與yield()方法的區別

就是 有關 方法 沒有 區別 sof interrupt 重新 線程

  sleep()方法與yield()方法的區別如下:

  1 是否考慮線程的優先級不同

  sleep()方法給其他線程運行機會時不考慮線程的優先級,也就是說,它會給低優先級的線程運行的機會。而yield()方法只會給相同優先級或更高優先級的線程運行的機會。

  2 重新執行時機不同

  sleep()方法會使當前線程阻塞,在睡眠時間內不會被執行。而yield()方法只是使當前線程重新回到可執行狀態,當前線程有可能在進入可執行狀態後立刻又被執行。

  3 是否拋出異常不同

  sleep()方法聲明拋出InterruptedException,而yield()方法聲明沒有拋出任何異常。

  4 可移植性不同

  sleep()方法比yield()方法(與操作系統有關)具有更好的可移植性。

  參考資料

  《Java程序員面試筆試寶典》 P150

Java 多線程 sleep()方法與yield()方法的區別