我在Java中實現阻塞文件鎖,並試圖獲取鎖我有一個代碼塊這樣的事情時:了Thread.sleep或產量輪詢時在Java中
while(!fileLockIsAcquired())
{
Thread.sleep(100); //is this cool?
tryAcquireFileLock();
}
的100值毫秒似乎對我來說過於僵化,我不知道如果我使用Thread.sleep(0)
或Thread.yield()
,調度程序不能更加智能。在我看來,收益更好地交流意圖,但我不確定我完全理解JVM如何解釋它。一個選項明顯比另一個好嗎?
該文件是一個通過web服務訪問的遠程文件,它沒有阻塞鎖定方法,所以我必須自己實現阻塞。
爲什麼不阻止?你沒有通過旋轉鎖定來完成任何有用的功能。 – EJP
'yield'沒有有用的語義;它在Java 1.3之前的日子裏有一點,在某些平臺上JVM仍然使用綠色線程。 –
@EJP這實際上是一個跨進程文件鎖定。我編輯了這個問題來澄清。 – MikeFHay