日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于java中线程yield()方法问题

發布時間:2025/3/12 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于java中线程yield()方法问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于java中線程yield()方法問題
問題一:
我知道yield是用來休眠當前線程,但我查看了資料,又說其不會釋放鎖,所以我就不解了,其明明會將cpu資源給其他線程,那它不釋放鎖,其他線程有怎么獲取cpu資源呢?還是我理解有誤?
問題二:
資料說是相同優先級的線程可以競爭獲取資源?那么比它優先級高的有機會嗎?

yield() 方法和釋放不釋放鎖沒有關系,樓主對其作用理解有偏差。jdk 中的解釋為:調用該方法的線程通知線程調度器當前線程可以讓出CPU,線程調度器可以響應或者忽略此請求。要注意的是:線程調度器并不一定響應這個請求。響應請求時,僅僅將當前線程變為可運行狀態。其他處于可運行狀態的線程將競爭CPU資源,高優先級線程將會比相同優先級的線程有較高的概率獲得CPU資源,但并不保證。另外,需要注意的是,CPU資源和鎖的獲取并沒有直接關系,CPU資源是由系統來分配的。

不要混淆cpu和鎖,線程交出cpu并不等于一定要交出鎖,這個yield只是讓出cpu,讓其他線程可以使用cpu,但是如果其他線程wait在該線程hold住的鎖上的話,那些線程是不會被執行的,其實就是即使運行也還是繼續wait。所有就緒的線程都可以競爭,高優先級的只是概率大些,但未必一定會先執行。而且剛剛用yield讓出cpu的線程也有可能被再次調度到。

yield不會釋放鎖,是指不會釋放它鎖住的一些“動作”,但是讓出了cpu資源;執行yield()的線程有可能在進入到可執行狀態后馬上又被執行,所以優先級低的線程不能競爭獲取資源,相同優先級的線程可以競爭獲取資源,高優先級線程將會比相同優先級的線程有較高的概率獲得CPU資源。

問題1:其他線程包括競爭這個“鎖”的線程,也包括跟這個“鎖”毫無關系的線程。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的关于java中线程yield()方法问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。