У меня есть следующая ситуация: несколько потоков могут попытаться создать одну и ту же папку одновременно, например.Блокировка для создания новой папки
Thread 1 Thread 2
1 new File("\newfolder\").mkdir() 1 new File("\newfolder\").mkdir()
2 2
...
Я пытался проверить эту ситуацию несколько раз (создать ту же самую папку, используя несколько Тедаса), и каждый раз был успешным например, я не получил каких-либо проблем. Однако я обеспокоен по поводу такого подхода - я должен синхронизировать этот код или нет e.g.should я использую что-то вроде
try {
folderCreationLock.lock();
File directory = new File(directoryPath);
if (!directory.exists()) {
directory.mkdir();
}
} finally {
folderCreationLock.unlock();
}
}
или я в безопасности только с
directory.mkdir();
Спасибо, ура!
@AndyTurner Что делать, если два потока пытаются создать одну и ту же папку одновременно? Может ли это привести к какой-то ошибке? –
OS должен позаботиться об этом – wero
Почему вы используете 'File'? Это 2015 год, используйте java.nio.file – fge