Java 線程 | yield() 和 join()

多線程的執行流程:多個線程併發請求執行時,由cpu決定優先執行哪一個,即使通過thread.setPriority(),設置了線程的優先級,也不一定就是每次都先執行它。


yield:表示暫停當前線程,執行其他線程(包括自身線程) 由cpu決定

join:阻塞所在線程,等調用它的線程執行完畢,再向下執行


Thread.yield()方法作用是:暫停當前正在執行的線程對象,並執行其他線程。
yield()應該做的是讓當前運行線程回到可運行狀態,以允許具有相同優先級的其他線程獲得運行機會。因此,使用yield()的目的是讓相同優先級的線程之間能適當的輪轉執行。但是,實際中無法保證yield()達到讓步目的,因爲讓步的線程還有可能被線程調度程序再次選中。
結論:yield()從未導致線程轉到等待/睡眠/阻塞狀態。在大多數情況下,yield()將導致線程從運行狀態轉到可運行狀態,但有可能沒有效果。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章