在Guava 10+中,Google已棄用Files.deleteDirectoryContents()。 JavaDoc說爲什麼在Guava中不推薦使用Files.deleteDirectoryContents()?
已棄用。這種方法遇到糟糕的符號鏈接檢測和競爭條件。此功能僅適用於支持操作系統命令(例如rm -rf或del/s)的 。 此方法定於番石榴番石榴除去釋放 11.0
我對爲什麼會出現競爭條件困惑。我認爲這種方法實際上很有用,並且發現向操作系統提出一個糟糕的解決方案。作者可以分享爲什麼做出這個決定嗎?
更清晰,我覺得有競爭狀態的問題不是主要的錯誤。許多庫,像'ArrayList'不是線程安全的或者有競爭條件。即使'File.remove'也有同樣的問題。但他們都記錄在案。所以我希望聽到一個答案,除了文件已經說了他們爲什麼選擇使其不推薦使用。 –
這種競爭條件和典型的非線程安全類之間的區別在於它沒有「修復」。相比之下,您可以通過同步鎖對象來解決非線程安全類的Java線程安全問題。一種根本無法做到人們所期望的方法是一種不好的方法。 –
這是一個很好的觀點。謝謝。 –