天天看點

Thread.sleep()和Thread.yield()

這倆個方法都是停止目前的線程,把運作的機會讓出來.

但是Thread.yield()卻可能讓不出來.

  • sleep()方法會給其他線程運作機會,而不考慮其他線程的優先級,是以會給較低優先級線程一個機會;yield()方法隻會給相同優先級或者更高優先級線程一個運作的機會。
  • 當線程執行了sleep(long millis)方法後,會轉到阻塞狀态,參數millis指定睡眠的時間;當線程執行了yield()方法後,将轉到就緒狀态。
  • sleep()方法方法抛出InterrupedException異常,而yield()方法沒有聲明抛出任何異常。
  • sleep()方法比yield()方法具有更好的可移植性。不能依靠yield()方法來提高程式的并發性能。對于大多數程式員來說,yield()方法的唯一用途是在測試期間人為地提高程式的并發性能,以幫助發現一些隐藏的錯誤。

繼續閱讀