Давайте рассмотрим две отдельные задачи Alfresco Rhino-JavaScript, которые конкурируют за создание той же папке:Alfresco JavaScript/Rhino многопоточной обработки и параллельность
var shared = companyhome.childByNamePath("shared");
var newFolderName = "folder-x";
var newFolder = shared.childByNamePath(newFolderName);
if (newFolder==null) {
java.lang.Thread.sleep(10000);//remove this line in second thread
newFolder = shared.createFolder(newFolderName);
if (newFolder==null){
logger.error("error: "+newFolderName);
} else {
logger.info("success: "+newFolderName);
}
} else {
logger.info("already exists: "+newFolderName);
}
Если запустить первый сценарий с сна (10 сек) и второй сценарий без сна, то:
- второй скрипт создаст папку «папку-х»
- первый сценарий будет расти «файл или папка папка-х уже существует» исключение
Давайте представим себе множество конкурирующих потоков, пытающихся создать случайные папки. Есть ли что-то вроде семафоров или атомных операций, которые блокируют только создание указанной папки (неблокирование для других папок)?
вам просто нужно проверить после сон, а не раньше ... – dandavis