可能重複:
Are Thread.sleep(0) and Thread.yield() statements equivalent?Java中的Thread.yield()和Thread.sleep(0)有什麼區別?
在我的理解,無論是Thread.yield()和的Thread.sleep(0)應使CPU rejudge一些調度算法要運行的線程。
的區別是:
Thread.yield()是給執行機會給其他線程,但是的Thread.sleep(0)不會,它會直接告訴CPU,你應該重新安排執行線程包括當前線程本身。 Thread.yield()只是一個建議,意味着它可能根本不被接受,但Thread.sleep(0)將強制重排。
以上兩個結論是否正確?
由於這些方法非常依賴實現,所以很難說。你不應該依賴這些方法的行爲。例如,如果你有一個循環,只是Thread.yield()它不會放棄CPU 99%+的時間。根據操作系統的不同,Thread.sleep(0)可能會從0.5秒睡眠到2毫秒,放棄CPU,但這也不是保證。 – 2011-01-28 11:32:42