-1
當我在我的Java程序中調用file.getAbsolutePath()
時,似乎我有競爭條件。與文件getAbsolutePath競爭條件()java
在一個線程中,我正在處理一個文件,當它完成處理時,我正在更改文件名並將其移動到UNIX文件系統上的另一個目錄。
在並行運行的單獨線程中,我試圖打開正在處理和讀取其內容的此文件。在99%的用例中,這個操作沒有問題,但是我有時會注意到操作失敗,出現異常。
當我捕捉到這個異常時,我記錄了file.getAbsolutePath()
的值,我看到該值是文件在已經移動的已處理目錄中的路徑與它所在目錄中文件的路徑的連接出現在加工完成前。
過去有沒有人遇到類似的問題,你是如何解決它的?
感謝
沒有人能告訴你的問題在於信息太少。你似乎已經決定調用getAbsolutePath(),但是我們沒有這方面的證據,並且它比導致編程錯誤的情況更不可能導致任何類型的競爭條件。 – arcy
@JoshDavies請注意,File沒有聲明爲線程安全的,所以您不能在沒有正確同步的線程之間共享它。 – isnot2bad
你能寫一個簡短的程序來證明這個問題嗎? (見[SSCCE](http://sscce.org/)) – ntoskrnl