2011-11-19 89 views
0

我有一個困惑。我在某處讀取Thread.yield()方法會導致當前正在運行的線程暫停並給予「相同優先級」剩餘線程的機會。收益法混淆

現在總是可以執行相同的優先級線程或更高優先級的線程。如果假設當前正在運行的線程對某個對象有某種鎖定,那麼在執行yeild方法後它會鎖定它?

回答

3

當您調用Thread.yield()時,當前線程暫停並允許調度程序運行不同的線程。優先級由調度程序管理。

不,當然不是 - 你不釋放任何鎖。這樣做會破壞同步。

+0

好的,我明白了你的觀點。但是我認爲,當前線程暫停並且某個其他線程有機會執行時,那麼該線程的優先級是什麼。與暫停的線程更高或相同。 – aj983

+0

你不知道,也不能預測它,這是調度程序的工作。 –

+1

你通常不應該打電話收益率 – Kevin