簡體   English   中英

鎖定以創建新文件夾

[英]Lock for creation a new folder

我有以下情況:多個線程可能嘗試同時創建同一文件夾,例如

Thread 1                                    Thread 2
1 new File("\newfolder\").mkdir()           1 new File("\newfolder\").mkdir()
2                                           2   

...

我嘗試多次測試這種情況(使用多個theda創建相同的文件夾),每次都成功,例如,我沒有遇到任何問題。 但是我擔心這種方法-我應該同步這段代碼還是不應該使用

  try {
            folderCreationLock.lock();
            File directory = new File(directoryPath);
            if (!directory.exists()) {
                directory.mkdir();
            }
        } finally {
            folderCreationLock.unlock();
        }
   }

還是我只是安全

   directory.mkdir();

謝謝,加油!

正如fge已經提到的那樣,請使用NIO 2 API。

Files.createDirectories(Paths.get("\\new\\folder"));

如果目錄\\\\new不存在,這將創建目錄\\\\new\\\\folder
如果目錄\\\\new已經存在,則僅創建其子文件夾\\\\folder
如果整個目錄結構已經存在,將不會創建任何內容,並且(可能是最重要的)不會引發異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM